我有模型:
class MyModel
include Mongoid::Document
after_save :my_callback, if: -> { name_changed? }
field :name, type: String
def my_callback
# this will execute two times
puts 'executes my callback'
puts changes
end
end
想象一下,如果执行以下代码,当变量a
和b
接收相同的文档并且函数update!
使用相同的参数执行时name: 'foo'
。因此,在第一次更新中my_callback
应该调用该函数,但在第二次更新中不应该调用。
MyModel.create(name: 'bar')
a = MyModel.last
b = MyModel.last
a.update!(name: 'foo')
executes my callback
{"name"=>['bar', 'foo']}
=> true
b.update!(name: 'foo')
executes my callback -> this not can execute
{"name"=>['bar', 'foo']}
=> true
如何防止该功能my_callback
在第二次更新中运行?