ActiveRecord::Rollbackは正常終了するので後に書いた処理が走る
def execute
result = false
ActiveRecord::Base.transaction do
# なんか処理
raise ActiveRecord::Rollback # <= ここで例外(ActiveRecord::Rollback)は
# いろいろ処理
result = true
end
result # <= ここ通る
end
ActiveRecord::Rollback以外は正常終了しないので後に書いた処理は走らず、該当rescueまで飛ぶ
def execute
result = false
ActiveRecord::Base.transaction do
# なんか処理
hoge.save! # <= ここで例外(ActiveRecord::RecordInvalid)は
foo.bar() # <= ここで例外(Custom::Error)も
# いろいろ処理
result = true
end
result # <= ここ通らない
rescue Custom::Error, ActiveRecord::RecordInvalid
# 例外対応
end