我在服务对象中有一个方法,该方法组合应该包含在事务中的操作.其中一些操作也包裹在事务中.例如:
@H_301_2@class PostCreator
def create
ActiveRecord::Base.transaction do
post.do_this
post.do_that
user.do_more(post,other_stuff)
end
end
end
def Post
def do_this
transaction do; ...; end
end
end
我需要任何嵌套的失败来一直到顶部,但我不知道如何发生这种情况,而在nested transactions的ActiveRecord文档似乎没有提供一个解决方案.从文档:
@H_301_2@# Standard nesting User.transaction do User.create(username: 'Kotori') User.transaction do User.create(username: 'Nemu') raise ActiveRecord::Rollback # This won't bubble up: # _Both_ users will still be created. end end # Nesting with `requires_new: true` on the nested transaction User.transaction do User.create(username: 'Kotori') User.transaction(requires_new: true) do User.create(username: 'Nemu') raise ActiveRecord::Rollback # This won't bubble up either # "Kotori" will still be created. end end