【发布时间】:2009-06-01 05:56:06
【问题描述】:
我在控制器内部有一个复杂的操作,它对数据库执行多个更新查询。
如何在不进行任何结构重构的情况下使此操作像事务处理?
【问题讨论】:
标签: ruby-on-rails transactions actioncontroller
我在控制器内部有一个复杂的操作,它对数据库执行多个更新查询。
如何在不进行任何结构重构的情况下使此操作像事务处理?
【问题讨论】:
标签: ruby-on-rails transactions 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
【讨论】:
可以通过以下方式使控制器中的所有操作同时进行事务处理:
around_filter :transactional
def transactional
ActiveRecord::Base.transaction do
yield
end
end
【讨论】: