在Rails 3中跳过嵌套属性的验证?

时间:2012-03-02 07:50:16

标签: ruby-on-rails ruby-on-rails-3 validation

我目前正在使用嵌套表单/ fields_for,我想知道是否有一种简单的方法可以跳过嵌套属性的验证?

我可以在某个地方挤压一个object.nested_object.save(:validate => false)吗?

1 个答案:

答案 0 :(得分:4)

你只需要分两部分进行保存。关于父节约的第一次保存和关于嵌套

的第二部分

如果您在此嵌套字段上使用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

请参阅评论以获取更多信息。