LoginSignup
0
0

More than 5 years have passed since last update.

トランザクション内での考え方

Last updated at Posted at 2016-06-22

トランザクションは不可分な処理をまとめるので、

ActiveRecord::Base.transaction do
  A.save!
  B.save!
  C.save!
end

は、順番を変えて

ActiveRecord::Base.transaction do
  C.save!
  B.save!
  A.save! # <= save!と書いたがロングラニング特有のWeb API操作と考える
end

としても最終的に同じことである。本当のソースはこれほど簡略化できないので同じことではないことも多いが、入れ替えても同じである場合、柔軟に入れ替えることで、エラーになりそうな所を早めにsave!で確認して無駄な後続処理をしなくて済むようにしたり、その逆に、エラーになりそうなところは最後まで処理をしないで、失敗したら巻き戻すなどのテクニックが使える。後者は、ロングラニングトランザクションで有効といえそうである。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0