Rails has_many:在关联表中使用不同的列名

时间:2012-06-15 18:58:54

标签: ruby-on-rails ruby-on-rails-3

我目前有两种不同的型号:UserProjectUser模型有三种类型的用户 - 所有者,承包商和客户。我想将多个承包商分配到一个项目。我正在尝试使用has_many :through关联,如下所示:

Class User
   has_many :assignments
   has_many :projects, :through => :assignments 

Class Project
   has_many :assignments
   has_many :contractors, :through => :assignments

Class Assignment
   belongs_to :user
   belongs_to :project

我的问题是在contractor_id表格中使用assignments而不是user_id

在我的assignments表格中,我目前有列contractor_idproject_id。如果我使用user_id代替,一切似乎都有效,但这会在我的观点中导致事情变得非常混乱。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:16)

您应该使用Assignment中的:foreign_key选项,例如:

class Assignment
  belongs_to :user, :foreign_key => :contractor_id
  belongs_to :project