我无法让inverse_of
在创建时加入联合模型。我不确定这是一个错误还是没有实现。我有以下型号:
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 :(得分:17)
根据active record api 3.2.1:“目前:inverse_of支持has_one和has_many(但不支持:通过变体)关联。它还为belongs_to关联提供反向支持,其中inverse是一个has_one,它不是多态的。“