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