Job有很多发票:
class Job < ActiveRecord::Base
has_many :invoices, :autosave => true
before_save :set_outstanding_payments
end
class Invoice < ActiveRecord::Base
belongs_to :job
end
更新发票(@invoice.update(...)
)后,系统会调用作业set_outstanding_payments
。
为什么?
答案 0 :(得分:6)
我对这种行为感到非常惊讶,因为正如文件所述,只有父母被保存时才会触发自动保护。
原因可能是因为在您的作业关联中使用:autosave => true
声明会导致子更新在父级上调用保存。
在父节点上调用save时,将调用所有保存挂钩。尽管如此,请确保在Invoice
模型中与父母混淆时没有任何 或之后的更新挂钩。
有关自动保存关联功能的更多信息,请参阅此链接:
http://api.rubyonrails.org/classes/ActiveRecord/AutosaveAssociation.html
我希望它有所帮助。