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のは悪い考えですか?これをどのように行いますか?:)