2012-05-05 10 views
1

私は以下を理解しようとしていますが、きれいな解決策を思いつくことはできませんでした。たぶん私は何か基本的なものを逃しているかもその関連付けに基づいてレールモデルを初期化する方法

概要

Iは、多対多のタスクとユーザモデルを持っています。

1人のユーザーが多数のタスクを持つことができ、1つのタスクは多くのユーザー間で共有できます。使用して、USER_IDとTASK_IDを使用してタスクとuser_idのリンクにより、ユーザーとの

user.tasks.create 

タスクリンク:task_table

を通じてタスクが属する

は、私は、次を使用してタスクを作成しますユーザーは、一度終了すると、タスクの次のユーザーに渡されます。

問題

それは、タスクを作成するユーザーのために、タスクを完了するために彼のターンであることを常にそうです。完了すると、次のユーザーに渡されます。

私は現在持っている:

user1.tasks.create(:current_user => user1.id) 

ユーザーは、タスクを完了したとき:CURRENT_USERの変更を。

私が達成しようとしているのは、user1.tasks.createを書くだけで、current_userが自動的に設定され、user1.idを明示的に渡す必要はありません。私はこれを行うことができる方法はありますか?たぶんコンストラクタを使用しているかもしれません(私はそれらのすべてを試しましたが、何もできません)。

ありがとうございます!

+0

ような何かを試すことができますか? – moritz

+0

の直後user.tasks.create - >タスクが構築されたとき – Karan

+0

ああ、私はあなたが最初のユーザーをどのように選ぶのですか?まずDBで、最も初期のcreated_atなどですか? – moritz

答えて

0

あなたは、あなたの協会にbefore_addコールバックでこれをやってあなたが最初の「CURRENT_USER」を選択したくないものをロジックた後

class User < ActiveRecord::Base 
    has_many :tasks, :through => :task_table, :before_add => Proc.new { |u,t| t.current_user = u } 
end 
関連する問題