0

トランザクションが正常にコミットされたか (ロールバックしなかったか) を判断する方法はありますか?

Inventory.transaction do
  beads.each do |bead|
    # update something
    # insert something
    # delete something
  end
end

それとも、このような方法しかありませんか?

success = false
Inventory.transaction do
  beads.each do |bead|
    # update something
    # insert something
    # delete something
  end
  success = true
end

if success
  # do something
end

または、例外が伝播されるため、例外がなければ成功したと仮定しますか?

4

1 に答える 1

0

例外が心配な場合は、try/catch ブロック (またはbegin/rescueブロック、より Ruby らしくする) でラップしてみませんか?

begin
  Inventory.transaction do
    beads.each do |bead|
      # update something
      # insert something
      # delete something
    end
  end
rescue WhateverError
  #handle error
end
于 2012-08-17T20:25:06.267 に答える