1

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

タスクには、タイプがユーザーの作成者と、タイプがユーザーの担当者がいます。

作成者関係を機能させるために AddUserIdtoTasks の移行を既に行っていますが、担当者を追加するには同じことを再度行う必要がありますが、既にキーワード「user」を使用しています。適切な関係を構築するにはどうすればよいですか。

タスクの担当者は常に 1 人だけです。

ユーザーモデルにはdeviseを使用しています。

4

2 に答える 2

2
has_one :creator, :class_name => "User"
has_one :asignee, :class_name => "User"

またはbelongs_to、フィールドの設定方法によって異なります。has_oneどちらも、あなたのような場合にbelongs_toオプションの引数を取ります。:class_name

于 2011-09-15T17:40:59.223 に答える
0

assignee_idタスクモデルにフィールドを作成し、次のようにリレーションに使用します。

class Task < AR::Base
  belongs_to :assignee, :class_name => 'User'
end

関係の反対側

class User < AR::Base
  has_many: :assigned_tasks, :class_name => 'Task', :foreign_key => :assignee_id
end

申し訳ありませんが、する必要があります:class_name。パラメータを使用してレコードを結合すること:foreign_keyなく、パラメータを使用してUserクラスを更新しました(has_manyのデフォルト値、つまり「#{class_name}_id」`)。user.assigned_tasks:user_id

私が投稿したリンクを読んでください。これらすべてのことを私よりもよく説明しています。

ソース: http: //guides.rubyonrails.org/association_basics.html#detailed-association-reference

于 2011-09-15T17:39:18.030 に答える