2012-03-02 16 views
6

ऑब्जेक्ट मॉडल में के माध्यम से, मैंएकाधिक has_many:

has_many :likes 
has_many :hates 
has_many :users, :through => :likes 
has_many :users, :through => :hates 

मैं पसंद के लिए उपयोगकर्ताओं की सूची कैसे प्राप्त करूं है? जैसे object.users < --- लेकिन मैं पसंद या नफरत के माध्यम से कैसे निर्दिष्ट करूं?

उत्तर

6

आपको इन दो अलग-अलग संगठनों को अलग-अलग नाम देने की आवश्यकता है। क्या

के बारे में
has_many :likes 
has_many :hates 
has_many :likers, :through => :likes, :source => :user 
has_many :haters, :through => :hates, :source => :user 
+0

है यही कारण है कि मैं क्या सोचा था, भी, लेकिन 'has_many' दस्तावेज़ों (ActiveRecord :: संघों :: ClassMethods में) कहते हैं:" ':। Through' एक संघ के माध्यम से जो क्वेरी प्रदर्शन करने के लिए [निर्दिष्ट करता है .. ।] 'Class_name',': primary_key' और ': foreign_key' ** के लिए विकल्प ** को अनदेखा कर दिया गया है, क्योंकि एसोसिएशन स्रोत प्रतिबिंब का उपयोग करता है।" - इसलिए, 'class_name' कुछ भी नहीं करेगा, है ना? – fanaugen

+0

आप सही हैं, मैंने प्रलेखन के अनुपालन के लिए उदाहरण अपडेट किया है, जहां यह स्रोत एसोसिएशन का संदर्भ देता है, जिसमें से अनुमान लगाया जा सकता है कि यह उपयोगकर्ता वस्तु है। –

+0

मुझे लगता है कि ': स्रोत =>: उपयोगकर्ता' होना चाहिए: स्रोत =>: उपयोगकर्ता'। –

0

आप इसे पसंद कर सकते हैं:

has_many :user_likes, :through => :likes, :class_name => 'User' 
1

ऐसा लगता है कि मैं स्रोत भी जोड़ने की जरूरत है। यदि रेल पसंद में पसंद/पसंद की तलाश नहीं करेंगे।

has_many :likes 
has_many :hates 
has_many :likers, :through => :likes, :class_name => 'User', :source => 'user' 
has_many :haters, :through => :hates, :class_name => 'User', :source => 'user' 
संबंधित मुद्दे