2011-09-15 11 views
6

पर शामिल होने वाले मॉडल पर मैं सृजन पर मॉडल में शामिल होने के लिए inverse_of नहीं प्राप्त कर सकता। मुझे यकीन नहीं है कि यह एक बग है या बस इस तरह लागू नहीं किया गया है। मैं निम्नलिखित मॉडल:ActiveRecord: inverse_of has_many पर काम नहीं करता है:

class Challenge < ActiveRecord::Base 
    has_many :groups, :through => :group_challenges 
    has_many :group_challenges, :inverse_of => :challenge 

    attr_accessor :contact_ids 
end 

class GroupChallenge < ActiveRecord::Base 
    belongs_to :challenge, :inverse_of => :group_challenges 
    belongs_to :group, :inverse_of => :group_challenges 

    before_save :check_challenge 

    def check_challenge 
    Rails.logger.debug("challenge.contact_ids: #{challenge.contact_ids}") 
    end 
end 

class Group < ActiveRecord::Base 
    has_many :challenges, :through => :group_challenges 
    has_many :group_challenges, :inverse_of => :group 
end 

contact_ids मेरी challenge का एक आभासी विशेषता है, और मैं group_challenges मॉडल में इन का उपयोग करने की जब कि संघ बनाई गई है चाहते हैं। मैं इसे काम नहीं कर सकता। यहाँ एक उदाहरण है:

challenge = Challenge.new :groups => Group.all, :contact_ids => [1,2,3] 
# log output => challenge.contact_ids: [] 

हालांकि inverse_of करता है काम जब मॉडल पुनः लोड कर रहे हैं

challenge.reload 
challenge.group_challenges.first.challenge.contact_ids 
# log output => challenge.contact_ids: [1,2,3] 

किसी को भी अगर यह सिर्फ एक डिजाइन या कार्यान्वयन में inverse_of की सीमा नहीं बल्कि एक बग है पता है?

+0

मुझे एक ही समस्या है। – rafamvc

उत्तर

17

अनुसार active record api 3.2.1: "वर्तमान में: inverse_of has_one और has_many (लेकिन नहीं: वेरिएंट के माध्यम से) का समर्थन करता है। संघों यह भी belongs_to संघों जहां उलटा एक has_one है के लिए उलटा समर्थन की आपूर्ति और यह एक नहीं है बहुरूपी। "

+2

ओह अच्छा, या मैंने उस दस्तावेज को कभी नहीं देखा। बहुत बुरा, यह बहुत आसान होगा !! – brad

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