2012-06-15 3 views
8

В настоящее время у меня две разные модели: User и Project. Модель User имеет трех типов пользователей - владельцев, подрядчиков и клиентов. Я хочу назначить нескольких подрядчиков одному проекту. Я пытаюсь это с 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 

Моя проблема заключается в использовании contractor_id в assignments таблице вместо user_id.

В моей таблице assignments у меня в настоящее время имеются столбцы contractor_id и project_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 =>: contractor_id on has_many: присваивания –