2012-06-15 10 views
8

Attualmente ho due modelli diversi: User e Project. Il modello User ha tre tipi di utenti: proprietari, appaltatori e clienti. Voglio assegnare più appaltatori a un progetto. Sto provando questo con un'associazione has_many :through, in questo modo:Rails has_many: attraverso con nome di colonna diverso nella tabella di associazione

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 

mio problema è nell'uso contractor_id nella tabella assignments invece di user_id.

Nella tabella assignments attualmente sono presenti le colonne contractor_id e project_id. Tutto sembra funzionare se uso invece lo user_id, ma ciò causerà problemi nelle mie visualizzazioni.

Come potrei realizzare questo?

risposta

14

Si consiglia di utilizzare l'opzione :foreign_key in Assignment, ad esempio:

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

questo funziona sicuramente l'unico modo, ora ho solo bisogno di ottenere il modello all'utente di riconoscere il 'contractor_id' invece di' user_id' quando ho chiama '@ user.projects' –

+2

capito. Modello utente necessario: foreign_key =>: contractor_id su has_many: assignments –

Problemi correlati