Если вы хотите, чтобы обычно выполнялся обратный вызов, но в определенное время можно было его пропустить, я обычно использую этот шаблон:
class User < ActiveRecord::Base
attr_accessor :skip_do_something
after_save :do_something
private
def do_something
return if skip_do_something
# do work here
end
end
Таким образом, он обычно всегда запускает обратный вызов do_something
, но его можно пропустить, выполнив:
user = User.find 1
user.skip_do_something = true
user.save
Надеюсь, это поможет.