使用以下关系设置:
class Parent < ActiveRecord::Base
has_many :children
end
class Child < ActiveRecord::Base
belongs_to :parent
validates_presence_of :first_name
end
p = Parent.new
p.children.build
p.save
=> false
p.errors
=> {:children => ["is invalid"]}
有没有办法在子对象上保留验证,但没有让失败的验证阻止父对象的保存?
答案 0 :(得分:2)
查看save(options={})
中的ActiveRecord::Validations
。
您可以将:validate => false
传递给save(),这会跳过对valid?
的调用。
这也会跳过对父对象的任何验证,因此如果父对象也有验证,你可能需要做更多的事情。
答案 1 :(得分:0)
这不是铁杆式,但它可以回答你的问题。所以只需自己管理协会:
p = Parent.new
p.save
c = Children.new(:parent_id => p.id)
c.save => 'first name can't be blank"