Пропустить проверки для вложенных атрибутов в Rails 3? - PullRequest
1 голос
/ 02 марта 2012

В настоящее время я работаю с вложенными формами / fields_for, и мне было интересно, есть ли простой способ пропустить проверки для вложенных атрибутов?

Могу ли я сжать объект.nested_object.save (: validate => false) где-нибудь?

1 Ответ

4 голосов
/ 02 марта 2012

Вам просто нужно сохранить в две части. Первое сохранение о родительском сохранении и второе о вложенном

Если вы используете 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

Пожалуйста, смотрите комментарий для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...