ActiveRecord: inverse_of no funciona en has_many: a través del modelo de combinación en create

No puedo obtenerinverse_of para trabajar en modelos de unión en la creación. No estoy seguro de si esto es un error o simplemente no se implementa como tal. Tengo los siguientes modelos:

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 es un atributo virtual de michallenge, y me gustaría acceder a estos en lagroup_challenges model cuando se crea esa asociación. No puedo conseguir que funcione. Aquí hay un ejemplo:

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

Sin embargoinverse_of funciona cuando los modelos se vuelven a cargar

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

¿Alguien sabe si esto es solo una limitación de diseño de inverse_of o más bien un error en la implementación?

Respuestas a la pregunta(1)

Su respuesta a la pregunta