は私のコントローラのこのコードを考えてみましょう:Rails:「保存」が失敗するかどうかを事前に知る方法?
def create
change_some_db_values
buyer = Buyer.new(params[:buyer])
if buyer.save
redirect_to(:action => 'index')
else
render('new')
end
end
私はbuyer.save
が失敗したりしません場合は、事前に知っていただきたいと思います。もし失敗するなら、私はchange_some_db_values
を実行したくありません。どうすればこれを達成できますか?
が実際に - 私はかなりこのソリューションのように、それは余分な妥当性チェックが事前に保存していdoes notの、しかし、change_some_db_valuesは、そのトランザクションの出てくるだけ買い手場合に実行する必要があります。新記録?その後の追加保存 –
@omar私はそれらの 'change_some_db_values'が同じデータベース内で起こっていると思います。したがって、 'buyer.save!'が失敗した場合、それらの変更があった場合を含め、トランザクション全体がロールバックされます。 – troelskn
Ah - 申し訳ありませんが、質問を間違って読んでしまった - 保存が失敗した場合には必ず 'change_some_db_values'を実行すると思っていました。 –