Я опубликовал статью об отключении обратных вызовов ActiveModel , но я не совсем уверен, что это самый красивый способ сделать что-то подобное.
Mongoid::Timestamps
добавляет обратный вызов перед сохранениемэто обновляет поле updated_at
.Допустим, в некоторых случаях я этого не хочу, и отключаю обратный вызов следующим образом:
class User
# I'm using Mongoid, but this should work for anything based on
# ActiveModel.
include Mongoid::Document
include Mongoid::Timestamps
def sneaky_update(attributes)
User.skip_callback(:save, :before, :set_updated_at)
User.update_attributes(attributes)
User.set_callback(:save, :before, :set_updated_at)
end
end
Вызывает ли skip_callback
, а затем set_callback
повторную установку удаленного обратного вызова, плохой идеей?Как бы вы это сделали?:)