как контроллер может вручную установить ошибки проверки для определенного поля

У меня есть форма с 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") там работает нормально ... но в таком случае как мой контроллер "пропустит" информация для валидатора, сообщающая, нужно ли проверять поле.

Ответы на вопрос(1)

Ваш ответ на вопрос