【发布时间】:2019-03-16 15:26:30
【问题描述】:
在 Rails 中使用 Active Record 事务时,我对异常处理有点不清楚。我见过他们中的许多人使用,
方法:1
def update
ActiveRecord::Base.transaction do
begin
# Some logic
rescue StandardError => e
raise ActiveRecord::Rollback
end
end
end
并且在很多地方都看到了以下逻辑。
方法:2
def update
ActiveRecord::Base.transaction do
if object.update(update_params)
# success
else
# error handling
end
end
rescue => e
# error handling
end
我认为第二种方法本身就足够了。我认为,如果发生任何意外或事务中的任何逻辑错误,事务本身将回滚,我们可以捕获它们并做任何我们想做的事情。是否需要在事务中捕获异常并手动提高回滚?这两种方法有什么区别,在哪种情况下?
【问题讨论】:
标签: ruby-on-rails activerecord transactions ruby-on-rails-5 rollback