我想保存多个对象,如果其中任何一个失败,则回滚所有对象。但我还想呈现ActiveRecord :: RecordInvalid消息,以便用户知道它为什么不保存。我该怎么做?
def save_multiple_things_or_error
ActiveRecord::Base.transaction do
thing_one.save!
thing_two.save!
rescue ActiveRecord::RecordInvalid => exception
# exception.message is what I want to render
raise ActiveRecord::Rollback
end
end
由于一些原因,这不起作用。我相信救援应该在开始结束块中,但是如果我提出回滚,我将失去RecordInvalid异常。
答案 0 :(得分:1)
begin
ActiveRecord::Base.transaction do
thing_one.save!
thing_two.save!
end
rescue => e
raise ActiveRecord::Rollback
end
这适用于我的情况