现在我遇到了一个问题,我怎样才能使回调#after_add在has_many中通过关联接收对连接模型的引用? 我的代码是这样的:
class Emergency
has_many :departments, :through => :eme_references, :after_add => Proc.new { |eme_reference| eme_reference.eme_flag = 1}
end
属性eme_flag是模型EmeReference的属性!但在块中,我得到eme_reference.class是紧急。 我想设置模型EmeReference的属性eme_flag。 这是我的问题! 干杯!
答案 0 :(得分:0)
我认为你想做的事情不能在那里完成。
您可以在部门上创建一个after_create挂钩(我假设紧急has_many eme_references has_many部门):
class Emergency
has_many :departments, :through => :eme_references
def flag!
eme_flag=1
save
end
end
class Department
after_create :check_emergency
# this allows you to call department.emergency. Will return nil if anything is nil
delegate :emergency, :to =>:eme_reference, :allow_nil => true
def check_emergency
self.emergency.flag! if self.emergency.present?
end
end
答案 1 :(得分:0)
大概Emergency
也has_many :eme_references
以便:through
关联有效?
在这种情况下,您应该可以在那里附加回调:
has_many :eme_references,
:after_add => Proc.new { |emergency, eme_ref| # code here }
该块接受2个参数,第一个参数为Emergency
,第二个参数将添加EmeReference
。
也许before_save
上的EmeReference
回调也可以在此实例中执行您想要的操作?