2012-06-15 13 views
8

वर्तमान में मेरे पास दो अलग-अलग मॉडल हैं: User और ProjectUser मॉडल में तीन प्रकार के उपयोगकर्ता हैं - मालिक, ठेकेदार और ग्राहक। मैं एक परियोजना के लिए कई ठेकेदारों को असाइन करना चाहता हूं। मैं एक 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 

मेरे मुद्दे के बजाय user_idassignments तालिका में contractor_id का उपयोग करने में है।

मेरी assignments तालिका में वर्तमान में मेरे पास कॉलम contractor_id और project_id हैं। अगर मैं user_id का उपयोग करता हूं तो सबकुछ काम करता प्रतीत होता है, लेकिन इससे मेरे विचारों में चीजें बहुत गन्दा हो जाएंगी।

मैं इसे कैसे पूरा करूं?

उत्तर

14

आप Assignment में :foreign_key विकल्प का उपयोग करना चाहिए, जैसे:

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

यह निश्चित रूप से, एक तरह से काम करता है अब मैं सिर्फ पहचान करने के लिए उपयोगकर्ता मॉडल प्राप्त करने की आवश्यकता '' बजाय user_id' की contractor_id' जब मैं कॉल करें @ user.projects' –

+2

इसे मिला। उपयोगकर्ता मॉडल की आवश्यकता है: विदेशी_की =>: contract__any पर contractor_id: असाइनमेंट –

संबंधित मुद्दे