如何在轨道中将对象与两次相关联?

时间:2011-09-15 17:24:24

标签: ruby-on-rails activerecord model-associations

我有一个用户模型和一个任务模型。

任务具有user类型的创建者和user类型的受让人。

我已经完成了AddUserIdtoTasks的迁移以使创建者关系正常工作,但现在我需要再次执行相同的操作来添加受理人,但我已经使用了关键字“user”。我应该如何建立正确的关系。

任务总是只有一个受让人。

我正在使用设计用户模型。

2 个答案:

答案 0 :(得分:2)

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

belongs_to,具体取决于您的字段的设置方式。对于像你这样的案件,has_onebelongs_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