Nie mogę uzyskać inverse_of
do pracy nad modelami łączenia podczas tworzenia. Nie jestem pewien, czy jest to błąd, czy po prostu nie zaimplementowany jako taki. Mam następujące modele:ActiveRecord: inverse_of nie działa na has_many: przez na modelu łączenia na tworzenie
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
jest wirtualny atrybut z moich challenge
, i chciałbym, aby uzyskać do nich dostęp w modelu group_challenges
gdy stowarzyszenie jest tworzony. Nie mogę zmusić go do działania. Oto przykład:
challenge = Challenge.new :groups => Group.all, :contact_ids => [1,2,3]
# log output => challenge.contact_ids: []
Jednak inverse_of
działa, gdy modele są przeładowane
challenge.reload
challenge.group_challenges.first.challenge.contact_ids
# log output => challenge.contact_ids: [1,2,3]
Czy ktoś wie, czy jest to po prostu ograniczenie konstrukcja inverse_of czy raczej błąd w realizacji?
Mam ten sam problem. – rafamvc