我有一个用户模型和一个任务模型。
一个任务有一个用户类型的创建者和一个用户类型的受理人。
我已经完成了 AddUserIdtoTasks 的迁移以使创建者关系正常工作,但现在我需要再次执行相同的操作来添加受让人,但我已经在使用关键字“用户”。我应该如何建立适当的关系。
一项任务始终只有一个受让人。
我正在为用户模型使用设计。
我有一个用户模型和一个任务模型。
一个任务有一个用户类型的创建者和一个用户类型的受理人。
我已经完成了 AddUserIdtoTasks 的迁移以使创建者关系正常工作,但现在我需要再次执行相同的操作来添加受让人,但我已经在使用关键字“用户”。我应该如何建立适当的关系。
一项任务始终只有一个受让人。
我正在为用户模型使用设计。
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.assigned_tasks
会使用:user_id
参数加入记录(has_many 的默认值,即“#{class_name}_id”`)。
我邀请您阅读我发布的链接,它比我更好地解释了所有这些事情。
资料来源: http: //guides.rubyonrails.org/association_basics.html#detailed-association-reference