首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果对子对象的验证失败,ActiveRecord仍会保存父对象

如果对子对象的验证失败,ActiveRecord仍会保存父对象
EN

Stack Overflow用户
提问于 2011-03-31 00:29:32
回答 2查看 940关注 0票数 2

通过如下的关系设置:

代码语言:javascript
代码运行次数:0
运行
复制
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"]}

有没有办法保留子对象上的验证,而不让它们失败的验证阻止父对象的保存?

EN

回答 2

Stack Overflow用户

发布于 2011-03-31 00:45:27

看看ActiveRecord::Validations中的save(options={})

您可以将:validate => false传递给valid? (),这将跳过对save()的调用。

这还将跳过父对象上的任何验证,因此如果父对象也具有验证,则可能需要执行更多相关操作。

Source

票数 2
EN

Stack Overflow用户

发布于 2012-12-08 18:06:50

这不是rails风格,但它回答了您的问题。所以只要自己管理关联就行了:

代码语言:javascript
代码运行次数:0
运行
复制
p = Parent.new
p.save
c = Children.new(:parent_id => p.id)
c.save => 'first name can't be blank"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5489207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档