как контроллер может вручную установить ошибки проверки для определенного поля
У меня есть форма с 3 полями ActiveRecord. В одном из этих полей есть какие-то глупые и ГОСУДАРСТВЕННЫЕ требования к валидации. (Например, я проверяю поле, только если объект создается в форме мастера настройки.)
В моем обработчике POST для создания объекта я думал, что могу вызвать errors.add, чтобы вставить специальное условие ошибки
@foo = Foo.new(params[:foo])
if goofy_conditions(params[:foo][:goofy_field])
@foo.errors.add(:goofy_field, "doesn't meet the goofy conditions" )
end
respond_to do |format|
if @foo.save
...
else
... redirect back to form (with error fields hilited)
Однако выполнение @ foo.errors.add () в контроллере, похоже, ничего не делает ... это не мешает save (), если другие поля проходят валидацию.
В качестве альтернативы можно добавить пользовательский обработчик проверки в модель ... Я знаю, что с помощью errors.add (: field, "msg") там работает нормально ... но в таком случае как мой контроллер "пропустит" информация для валидатора, сообщающая, нужно ли проверять поле.