1

私は次のことを理解しようとしてきましたが、きちんとした解決策を思い付くことができませんでした。たぶん私は何か基本的なものが欠けています。

概要

多対多のタスクとユーザーモデルがあります。

1人のユーザーが多くのタスクを持つことができ、1つのタスクを多くのユーザー間で共有できます。

以下を使用してタスクを作成します。

user.tasks.create

タスクはuser_idによってユーザーとリンクし、user_idは:throughtask_tableを使用してtask_idを使用してタスクとリンクします

タスクはユーザーに属しますが、完了すると、タスクの次のユーザーに渡されます。

問題

タスクを作成するユーザーにとって、タスクを終了するのは常に自分の番です。完了すると、次のユーザーに渡されます。

私は現在持っています:

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

ユーザーがタスクを完了すると、:current_userが変更されます。

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

ありがとう!

4

1 に答える 1

0

before_add関連付けのコールバックでこれを試すことができます。

class User < ActiveRecord::Base
  has_many :tasks, :through => :task_table, :before_add => Proc.new { |u,t| t.current_user = u }
end
于 2012-05-07T06:49:01.220 に答える