Bog*_*iev 5 transactions ruby-on-rails actioncontroller
我在控制器内部有一个复杂的动作,它对数据库执行几个更新查询.
如何在没有任何结构重构的情况下使此操作像事务一样?
MyModel.transaction do
begin
@model.update_stuff
@sub_model.update_stuff
@sub_sub_model.update_stuff
rescue ActiveRecord::StatementInvalid # or whatever
# rollback is automatic, but if you want to do something additional,
# add it here
end
end
Run Code Online (Sandbox Code Playgroud)
以下是交易方法的文档.
可以使用以下命令在控制器事务中进行所有操作:
around_filter :transactional
def transactional
ActiveRecord::Base.transaction do
yield
end
end
Run Code Online (Sandbox Code Playgroud)