我有2条相同型号的记录,我想保持这些记录上的一些数据同步。
我打算做一个after_save回调(或者可能是observer)来触发更新其他记录,但我担心这会导致保存的无限循环,因为其他记录将导致回调。
我在这里读到你可以在保存时绕过回调,但是这些方法在rails 2和3之间看起来很不hack,而且不一致(我们将在几个月后迁移到rails 3)。
有更好的选择吗?
可以创建attr_accessor:
attr_accessor :dont_run_callback
after_save :my_callback
def my_callback
MyModel.find(1).update_attributes(..., :dont_run_callback => true) unless dont_run_callback
end
之类的
您可以在基于第一个记录的更新更新第二个记录时使用update_columns
方法,反之亦然。