3

トランザクションからいくつかのものを引き出すために、ActiveRecord の保存メソッドをオーバーライドしたかったのです。メソッドをオーバーライドすることをお勧めしますか?

4

1 に答える 1

7

ほとんどの場合、代わりに使用すべきコールバックがいくつかあるため、答えはノーです: before_save、after_save、before_create、after_create。これらのコールバックはすべて、保存するレコード (または保存されたレコード) を引数として受け取るため、それらを使って好きなことを行うことができます。さらに、これらのコールバックのいずれかが例外を発生させたり、false を返したりすると、トランザクション全体がロールバックされます。

ただし、これはルビーです!つまり、本当に必要な場合は、やりたいことを何でもできます。何らかの理由でコールバックが十分でない場合は、先に進んでオーバーライドしてください。オーバーライドする理由の良い例は、余分な引数を追加することです (他のメソッドを壊す可能性があるため、実際にはお勧めしません)、またはそれらが必要な場合に余分なオプションを処理することです (これは非常に素晴らしいです!)

于 2013-09-30T11:46:00.343 に答える