Подтвердить что ты не робот

Условный переход

У меня есть модель рельсов, которая проверяет уникальность двух значений формы. Если эти 2 значения не уникальны, ошибки проверки отображаются, а кнопка "отправить" изменяется на "повторно отправить". Я хочу разрешить пользователю нажимать кнопку "повторно отправить" и обходить проверку модели. Я хочу сделать что-то подобное из документации проверки валиков:

validates_uniqueness_of :value, :unless => Proc.new { |user| user.signup_step <= 2 }

но у меня нет значения в моей модели, что я могу проверить... просто параметры, которые имеют значение "Resubmit".

Любые идеи о том, как это сделать?

4b9b3361

Ответ 1

По-моему, это лучший способ сделать это:

class FooBar < ActiveRecord::Base
  validates_uniqueness_of :foo, :bar, :unless => :force_submit
  attr_accessor :force_submit
end

то, на ваш взгляд, убедитесь, что вы указали тег submit, например

<%= submit_tag 'Resubmit', :name => 'foo_bar[force_submit]' %>

Таким образом, вся логика находится в модели, код контроллера останется прежним.

Ответ 2

Попробуйте следующее:

Рельсы 2: Model.save(false)
Рельсы 3: Model.save(:validate => false)

Он обходит проверки (все они хотя).

Ответ 3

Не положительно, но вы можете попытаться добавить attr_accessor к вашей модели, чтобы сохранить, была ли форма ранее отправлена.

просто добавьте

attr_accessor :submitted

к вашей модели и проверьте ее в своих действиях.

Ответ 4

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

def form_method
  case params[:submit]
    when "Submit" 
      'Do your validation here'
    when "Resubmit" 
      'Do not call validation routine'
  end
end