Non riesco a ottenere inverse_of
per lavorare sui modelli di join alla creazione. Non sono sicuro se questo sia un bug o semplicemente non implementato come tale. Ho i seguenti modelli:ActiveRecord: inverse_of non funziona su has_many: attraverso il modello join su create
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
è un attributo virtuale di mia challenge
, e mi piacerebbe accedere a questi nel modello group_challenges
quando viene creato tale associazione. Non riesco a farlo funzionare. Ecco un esempio:
challenge = Challenge.new :groups => Group.all, :contact_ids => [1,2,3]
# log output => challenge.contact_ids: []
Tuttavia inverse_of
funziona quando i modelli vengono ricaricati
challenge.reload
challenge.group_challenges.first.challenge.contact_ids
# log output => challenge.contact_ids: [1,2,3]
Qualcuno sa se questa è solo una limitazione di progettazione di inverse_of o piuttosto un bug nell'implementazione?
Ho lo stesso problema. – rafamvc