使用accepts_nested_attributes_for时忽略验证失败(即防止回滚)?

时间:2010-10-19 07:10:17

标签: ruby-on-rails validation nested-forms rollback nested-attributes

假设我有人和儿童模特:

class Person < ActiveRecord::Base
    has_many :children
    accepts_nested_attributes_for :children
end

class Child < ActiveRecord::Base
    belongs_to :parent, :class_name => "Person"
    validates_presence_of :name
end

现在当我使用嵌套表单并保存一个包含2个新子节点的Person时,如果其中一个子节点无法验证(即它将回滚),则整个事务将失败。

如何忽略此验证失败并只保存1个人和1个有效的孩子?我不希望整个事务失败,因为1个孩子验证失败。我只想保存有效记录......

非常感谢,谢谢!

P.S。使用:reject_if如果不是我的选项,因为我需要能够访问无效记录,直到我将其保存到数据库中(此时我想拒绝那些仍然无效的记录)

1 个答案:

答案 0 :(得分:0)

你可以在没有“accepts_nested_attributes_for:children”的情况下解决它,并单独保存控制器中的单个对象......