2011-09-15 10 views
6

作成時に結合モデルで作業するためにinverse_ofを取得できません。私はこれがバグか、そのように実装されていないかどうかはわかりません。私は、次のモデルがあります:ActiveRecord:inverse_ofがhas_manyで動作しません:createの結合モデルでthrough

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モデルでこれらにアクセスしたいと思います。私はそれを働かせることはできません。ここでは例です:これはちょうどinverse_ofの設計上の制約や、むしろ実装のバグであれば

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

は、しかしモデルが

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

を再ロードされたときにinverse_ofが作業を行います誰でも知っていますか? 1として

+0

私は同じ問題があります。 – rafamvc

答えて

17

active record api 3.2.1:「現在:。inverse_ofはhas_oneのとhas_manyの(ではなく:バリアント経由)をサポート関連をまた逆にhas_oneあるbelongs_toの団体のための逆のサポートを供給し、そうではありません多型。

+2

ああ、私はその文書に気付かなかった。あまりにも、それはとても便利だろう! – brad

関連する問題