Условный переход
У меня есть модель рельсов, которая проверяет уникальность двух значений формы. Если эти 2 значения не уникальны, ошибки проверки отображаются, а кнопка "отправить" изменяется на "повторно отправить". Я хочу разрешить пользователю нажимать кнопку "повторно отправить" и обходить проверку модели. Я хочу сделать что-то подобное из документации проверки валиков:
validates_uniqueness_of :value, :unless => Proc.new { |user| user.signup_step <= 2 }
но у меня нет значения в моей модели, что я могу проверить... просто параметры, которые имеют значение "Resubmit".
Любые идеи о том, как это сделать?
Ответы
Ответ 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