【发布时间】:2012-03-02 07:50:16
【问题描述】:
我目前正在使用嵌套的表单/字段_for,我想知道是否有一种简单的方法可以跳过对嵌套属性的验证?
我可以在某处挤压一个 object.nested_object.save(:validate => false) 吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 validation
我目前正在使用嵌套的表单/字段_for,我想知道是否有一种简单的方法可以跳过对嵌套属性的验证?
我可以在某处挤压一个 object.nested_object.save(:validate => false) 吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 validation
您只需要分两部分进行保存。第一部分是关于父类的保存,第二部分是关于嵌套的
如果您在此嵌套字段上使用 accepts_nested_attributes_for
def create
nested_params = params[:object].delete(:nested_attributes)
if object = Object.create(params[:object]) &&
object.update_attributes(nested_params, :validate => false)
redirect_to object_url(object)
else
render :new
end
end
更新来自 Cojones 的评论:
如果您不使用此选项,则需要直接指定nested_attribute,如注释说明:
def create
nested_params = params[:object].delete(:nested_attributes)
if object = Object.create(params[:object]) &&
object.nested_object.update_attributes(nested_params, :validate => false)
redirect_to object_url(object)
else
render :new
end
end
更多信息请查看评论。
【讨论】:
update_attributes 我在我的答案中修正了它
object.update_attributes(nested_params, :validate => false) 也不起作用,因为它试图将嵌套对象的属性分配给对象本身。 object.nested_object.update_attributes(nested_params, :validate => false) 成功了。再次感谢!