在rails中,您可以使用accepts_nested_attributes_for在父子关系中同时创建多个模型。但是假设您具有相同的关系,但是您希望同时更新两个模型上的字段,如果一个模型未通过验证,则可以确保其他模型也不会保存。怎么可以这样做?
def edit_multiple
@first=First.update(first_params)
@second=Second.update(second_params)
end
如果@first通过验证但@second没有通过验证,那么我们将会遇到一些我不想要的情况:一个模型正在更新但另一个模型没有。
答案 0 :(得分:1)
那是交易的目的:
First.transaction do
@first=First.update(first_params)
@second=Second.update(second_params)
end
现在他们两人一起成功或失败。有关详情,请访问ActiveRecord transactions
答案 1 :(得分:0)
首先检查所有模型实例是否为@model.valid?
然后执行保存而不进行验证@model.save(validate: false)
如果出现意外的异常,建议使用transaction
作为巨石建议仍是个好主意