Tôi không thể nhận được inverse_of
để làm việc trên các mô hình kết hợp khi tạo. Tôi không chắc chắn nếu đây là một lỗi hoặc chỉ không thực hiện như vậy. Tôi có các mô hình sau:ActiveRecord: inverse_of không hoạt động trên has_many: thông qua trên mô hình tham gia tạo
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
là một thuộc tính ảo của challenge
của tôi, và tôi muốn truy cập những trong mô hình group_challenges
khi hiệp hội được tạo ra. Tôi không thể có được nó để làm việc. Dưới đây là một ví dụ:
challenge = Challenge.new :groups => Group.all, :contact_ids => [1,2,3]
# log output => challenge.contact_ids: []
Tuy nhiên inverse_of
làm việc khi các mô hình được nạp lại
challenge.reload
challenge.group_challenges.first.challenge.contact_ids
# log output => challenge.contact_ids: [1,2,3]
Có ai biết nếu điều này chỉ là một giới hạn thiết kế của inverse_of hay đúng hơn là một lỗi trong việc thực hiện?
Tôi gặp vấn đề tương tự. – rafamvc