Проблемы с проверкой в 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.