所以我有2个模型A
和B
。
保存或销毁A
时,B
需要根据A
发生的情况进行更新。
保存或销毁B
时,A
需要根据B
发生的情况进行更新。
我不能只进行2次回调,这会导致模型递归回调。当模型A
因触发B
回调而被保存时,我不需要触发回调,反之亦然。
执行此操作的轨道方式是什么?
答案 0 :(得分:1)
您可以在回调中使用update_columns
:
e.g:
模型A已保存。在回调中,你有这样的东西:
recordB.update_columns(:name => '')
update_column不会运行任何回调。 注意:它也不会运行验证,也不会更新updated_at字段。
答案 1 :(得分:1)
我有类似的情况,你能做的最好的事情是在你的回调中使用一个标志
class A
attr_accessor :is_updated_by_callback
after_commit :update_b
def update_b
return if is_updated_by_callback
b.is_updated_by_callback = true
b.update
end
end
反之亦然