ActiveRecord:inverse_of不适用于has_many:通过on上的连接模型

我无法在创建时使用inverse_of来处理连接模型。 我不确定这是一个错误还是没有实现。 我有以下型号:

 class Challenge  :group_challenges has_many :group_challenges, :inverse_of => :challenge attr_accessor :contact_ids end class GroupChallenge  :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  :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的设计限制,还是实现中的错误?

根据活动记录api 3.2.1:“当前:inverse_of支持has_one和has_many( 但不支持:through variants )关联。它还为belongs_to关联提供反向支持,其中inverse是has_one,而不是多态。”