我有一个用户模型和一个任务模型。我如何在一个对象中涉及两次对象?
任务具有创建者,用户类型和用户类型的受理人。
我已经完成了AddUserIdtoTasks的迁移以获得创建者关系的工作,但现在我需要再次做同样的事情来添加受让人,但我已经在使用关键字'user'。我应该如何去建立一个适当的关系。
一项任务总是只有一个受让人。
我正在使用用户模型的设计。
我有一个用户模型和一个任务模型。我如何在一个对象中涉及两次对象?
任务具有创建者,用户类型和用户类型的受理人。
我已经完成了AddUserIdtoTasks的迁移以获得创建者关系的工作,但现在我需要再次做同样的事情来添加受让人,但我已经在使用关键字'user'。我应该如何去建立一个适当的关系。
一项任务总是只有一个受让人。
我正在使用用户模型的设计。
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
那么你可以调用creator_id或asignee_id? – Btuman