Проблемы с проверкой в ​​Rails

Я использую Rails 3.2.16, devise и mongoid (возможные соответствующие Gems для этого вопроса).

После того, как пользователь зарегистрировался, я разработал перенаправление им, чтобы создать новый профиль, который belongs_to :user, Я делаю это со следующим переопределением устройства:

  def after_sign_up_path_for(resource)
    new_profile_path
  end

В профиле я называю валидацию в разных местах, например validates :biz_name, :on => :update, :presence => {:message => 'Business name cannot be blank'},

Когда new_profile_path загружается после того, как пользователь регистрируется, они сразу же получают ошибки валидации в тех полях, для которых я назвал валидацию. Сначала я был озадачен, потому что согласно моему коду выше, я вызываю проверку на update только. Поэтому не имело смысла, почему валидация выполнялась.

Во всяком случае, я разыскал свою ошибку. У меня есть несколько полей в моей модели профиля, которые имеют значения по умолчанию, такие как field :position_order, :type => Integer, :default => 1, Кажется, что сначала создается профиль с этими значениями по умолчанию, а затем, когда пользователь показывает его для редактирования, это на самом деле update метод вызывается - таким образом, вызывается ошибка проверки.

Как это исправить? В конце дня я хочу две вещи:

-Пополнить профиль некоторыми значениями по умолчанию, прежде чем пользователь сможет редактировать свой профиль
-При первом просмотре страницы редактирования профиля проверка не должна запускаться (поэтому пользователь не видит кучу ошибок до того, как он что-либо сделал).

1 ответ

Хм, я бы сказал, что вы должны пересмотреть требования. Какое использование имеет недопустимые значения по умолчанию?

И вы также можете предоставить поведение внешнего интерфейса, чтобы пользователь мог корректировать ввод с помощью HTML или Javascript.

Другие вопросы по тегам