我希望保存多个对象,并在其中任何一个失败时回滚所有对象。但是,我也希望呈现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异常。
发布于 2015-07-09 06:18:43
你可以试试这个:
begin
ActiveRecord::Base.transaction do
thing_one.save!
thing_two.save!
end
rescue => e
raise ActiveRecord::Rollback
end
这对我的情况很好。
https://stackoverflow.com/questions/31309481
复制相似问题