ユーザー モデルとタスク モデルがあります。
タスクには、タイプがユーザーの作成者と、タイプがユーザーの担当者がいます。
作成者関係を機能させるために AddUserIdtoTasks の移行を既に行っていますが、担当者を追加するには同じことを再度行う必要がありますが、既にキーワード「user」を使用しています。適切な関係を構築するにはどうすればよいですか。
タスクの担当者は常に 1 人だけです。
ユーザーモデルにはdeviseを使用しています。
ユーザー モデルとタスク モデルがあります。
タスクには、タイプがユーザーの作成者と、タイプがユーザーの担当者がいます。
作成者関係を機能させるために AddUserIdtoTasks の移行を既に行っていますが、担当者を追加するには同じことを再度行う必要がありますが、既にキーワード「user」を使用しています。適切な関係を構築するにはどうすればよいですか。
タスクの担当者は常に 1 人だけです。
ユーザーモデルにはdeviseを使用しています。
has_one :creator, :class_name => "User"
has_one :asignee, :class_name => "User"
またはbelongs_to
、フィールドの設定方法によって異なります。has_one
どちらも、あなたのような場合にbelongs_to
オプションの引数を取ります。:class_name
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