メソッドを持つクラスと、save
エイリアシングを使用してそれを変更する3つのミックスインがあるとします。
module Callbacks
def save_with_callbacks
callback :before_save
save_without_callbacks
end
end
alias_method_chain :save, :callbacks
end
同様に、save_with_transaction
とsave_with_timestamps
がこの順序で混在しているため、 がMyModel#save
呼び出さsave_with_timestamps
れ、 が呼び出されsave_with_transaction
、 が呼び出さsave_with_callbacks
れ、 最終的に元の が呼び出されますsave
。
ここで、トランザクションなしで保存したいとします。を呼び出すことはできますsave_without_transaction
が、タイムスタンプを設定するコードは呼び出されません。
タイムスタンプとコールバックを使用してモデルを保存し、トランザクションを保存するにはどうすればよいですか?
ミックスインを並べ替えることができますが、私の質問は、特にトランザクションではなく、真ん中を省略することです。メソッドのチェーンの途中を省略するにはどうすればよいですか?
注 - 簡潔にするために RoR の alias_method_chain を使用しましたが、私の質問はルビー全般に適用されます