2011-01-13 4 views
1

私は、オブザーバをafter_save(キャンペーン)のレイルズアプリに設定しました。コントローラのコールオブザーバのレンダリング

基本的に、オブザーバーはキャンペーン内の特定のタグを探し、それらのタグが存在する場合は、「達成」モデルで新しいレコードを作成します。

私がしようとしていることは、キャンペーンコントローラで、これらの達成度のいずれかがオブザーバーによって作成されているかどうかを確認し、そうであればその達成度の表示ページにリダイレクトします。

私はちょうどそれについて知らない簡単な機能があると確信しています...しかし、私は何を使うべきですか?

ありがとうございます!ノーコードで

答えて

1

、私は次のことを前提としたい:

あなたのようなルビーでそれを行うことができることに基づいてCampaignAchievement

との関係のいくつかの種類:

@campain = #however you find the campaign 
if @campaign.include?(Achievement.find_by_tag(@tag)) 
    redirect_to achievements_path 
else 
    flash[:error] = "Not this time, dude." 
    #something here to redirect if NO achievement 
end 
+0

うーんと、私はこれを考える。オブザーバーでbefore_save(キャンペーン)を使用すると、ALMOSTの作業が可能になります。問題は、実績が実際のデータベースレコードのタグへの参照を持っていないからです...タグはオブザーバで繰り返されます。方法は、そのようなものです:達成。新しい?これは最近成果が出ているかどうかを確認するためです(Achievement.find_by_tag(@タグ)の代わりに) – goddamnyouryan

+0

Nahですが、@ campaign.acheievements.lastをチェックして、いつ作成されたかを確認してからビジネスを行います。あなたはキャンペーンからそれをスコープする必要があります。そうしないと、すべてのユーザーやキャンペーンによって保存されたLASTアチーブメントが見つかりません。これはあなたが望むものではありません。 – pjammer

関連する問題