Khi sử dụng transaction trong RoR, có lúc ta không cần phải gọi câu lệnh ActiveRecord::Rollback
, cũng có lúc ta phải gọi nó.
Xét ví dụ:
- Nếu bỏ
raise ActiveRecord::Rollback
: Mọi thay đổi tới DB xảy ra ở second_operation và call_other_function đều được rollback trong trường hợp có lỗi xảy ra ở 2 chỗ đấy nhưng first_operation sẽ không được rollback - Nếu bạn muốn cả first_operation phải được rollback thì bạn phải gọi
raise ActiveRecord::Rollback
như đoạn code trên.
Link tham khảo:
https://stackoverflow.com/questions/2700727/does-rails-do-a-rollback-if-i-use-begin-rescue