通过如下的关系设置:
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"]}
有没有办法保留子对象上的验证,而不让它们失败的验证阻止父对象的保存?
发布于 2011-03-30 16:45:27
看看ActiveRecord::Validations
中的save(options={})
。
您可以将:validate => false
传递给valid?
(),这将跳过对save()的调用。
这还将跳过父对象上的任何验证,因此如果父对象也具有验证,则可能需要执行更多相关操作。
发布于 2012-12-08 10:06:50
这不是rails风格,但它回答了您的问题。所以只要自己管理关联就行了:
p = Parent.new
p.save
c = Children.new(:parent_id => p.id)
c.save => 'first name can't be blank"
https://stackoverflow.com/questions/5489207
复制