2012-06-15 42 views
8

我目前有两种不同的型号:UserProjectUser模型有三种类型的用户 - 所有者,承包商和客户。我想将多个承包商分配给一个项目。我用has_many :through协会试图这样,就像这样:Rails has_many:通过关联表中的不同列名称

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 

我的问题是在assignments表使用contractor_id代替user_id

在我的assignments表中,我目前有contractor_idproject_id列。如果我使用user_id来代替所有东西,似乎都可以工作,但这会在我的观点中导致事情变得非常混乱。

我该如何做到这一点?

回答

14

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

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

这绝对作品的一种方式,现在我只需要获得用户模型识别'contractor_id',而不是'user_id'当我调用'@ user.projects' –

+2

了解它。需要的用户模型:foreign_key =>:has_many:assignments上的contractor_id –

相关问题