我有一个用户模型和一个任务模型。
任务具有user类型的创建者和user类型的受让人。
我已经完成了AddUserIdtoTasks的迁移以使创建者关系正常工作,但现在我需要再次执行相同的操作来添加受理人,但我已经使用了关键字“user”。我应该如何建立正确的关系。
任务总是只有一个受让人。
我正在使用设计用户模型。
答案 0 :(得分:2)
has_one :creator, :class_name => "User"
has_one :asignee, :class_name => "User"
或belongs_to
,具体取决于您的字段的设置方式。对于像你这样的案件,has_one
和belongs_to
都会选择:class_name
个参数。
答案 1 :(得分: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.assigned_tasks
将使用:user_id
参数(has_many的默认值,即“#{class_name} _id”`)连接记录。
我邀请您阅读我发布的链接,它解释了比我更好的所有这些事情。
来源:http://guides.rubyonrails.org/association_basics.html#detailed-association-reference