save
メソッドを持つクラスと、エイリアシングを使用して修正する3つのミックスインがあるとします。そのために混入メソッド連鎖の途中をどうやって省略できますか?
save_with_transaction
と
save_with_timestamps
ため
module Callbacks
def save_with_callbacks
callback :before_save
save_without_callbacks
end
end
alias_method_chain :save, :callbacks
end
と同様に、最終的に元のsave
を呼び出す、save_with_callbacks
を呼び出す、save_with_transaction
を呼び出すようMyModel#save
コールsave_with_timestamps
、。
ここで、トランザクションなしで保存したいとします。私はsave_without_transaction
と呼ぶことができますが、タイムスタンプを設定するコードは呼び出されません。
タイムスタンプとコールバックを使用してモデルを保存することはできますが、トランザクションは保存しないでください。
私はミックスインを並べ替えることができますが、私の質問は特にトランザクションではなく中間を省略することです。メソッド連鎖の途中をどうやって省略することができますか?
NOTE - 私は簡潔にするためのRoRのalias_method_chainを使用しましたが、私の質問は、あなたの唯一のオプションがあると思われる一般的な
はい、彼らは時々それを作るのですか読むのは難しいですが、Railsのコードベースはそれらを大量に使います。 – Simon
私の母親が言っているように、「レールのコードベースが崖から飛び降りたら、あなたもそれをやるでしょうか?」 ...大丈夫、彼女は実際に言っていないだろう... :) – Andy