begin
ActiveRecord::Base.transaction do
installations.each do |installation|
id = installation.id
installation = current_user.installations.find_by(:id=> id)
@ticket = installation.tickets.new(ticket_params)
unless @ticket.save
raise ActiveRecord::Rollback
end
end
end
redirect_to '/tickets', notice: "done"
rescue ActiveRecord::Rollback
render action: "new", notice: "problem" and return
end
想象一下,我们有两张票,第一张票有效,第二张票无效。在此代码中,第一张票将被保存。但是当我失败时我想要回滚所有的票据。 我该怎么做?如果一个对象失败所有对象回滚
这怎么不工作? – ndn
虽然你的代码可以缩短,但它应该工作得很好。 – Stefan
此代码中的问题是第一张票已保存!我想回滚两张票@ndn – lolix