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

And*_*Bas 9 ruby-on-rails ruby-on-rails-3

我目前有两种不同的型号:UserProject.该User模型有三种类型的用户 - 所有者,承包商和客户.我想将多个承包商分配到一个项目.我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

我的问题是使用contractor_idassignments表代替user_id.

在我的assignments表中,我目前有列contractor_idproject_id.如果我使用的话,一切似乎都有效user_id,但是在我看来,这会让事情变得相当混乱.

我怎么做到这一点?

Jor*_*ing 16

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

class Assignment
  belongs_to :user, :foreign_key => :contractor_id
  belongs_to :project
Run Code Online (Sandbox Code Playgroud)

  • 得到它了.需要的用户模型:foreign_key =>:contra_many上的contractor_id:赋值 (3认同)