Пользовательская модель пытается проверить наличие пароля при обновлении?

#ruby-on-rails #ruby-on-rails-3 #activerecord

#ruby-on-rails #ruby-on-rails-3 #activerecord

Вопрос:

У меня есть простая форма обновления учетной записи пользователя, в которой я пытаюсь обновить информацию учетной записи зарегистрированного пользователя. Но когда я пытаюсь выполнить user.update_attribute, он не жалуется на то, что пароль пуст, хотя в моей проверке наличия пароля указано :on => :create

Почему это происходит? Я не использую devise / authlogic или любой другой auth gem

Моя пользовательская модель выглядит следующим образом (в ней в виде столбцов указаны обычные подозреваемые password_hash / salt):

 attr_accessible :email, :password, :password_confirmation

validates_presence_of :password, :on => :create, :unless => :provider?
 

Пользовательский контроллер имеет следующий метод обновления:

 def update
  @user = current_user
  @user.update_attributes params[:user]

  # this prints error hash, see output below
  logger.error @user.errors.inspect 

  # other rendering code
  flash[:notice] = 'Saved OK'
  render :action => :edit
end
 

Вывод @user.errors.inspect после вызова @user.update_attributes —

 #<OrderedHash {:password=>["is too short (minimum is 6 characters)"]}>
 

Комментарии:

1. Используете ли вы какие-либо драгоценные камни, такие как Devise или Authlogic?

2. Попробуйте validate_presence_of :password, :unless => «authentications.present?»

3. не используется какой-либо devise / authlogic или любой другой камень аутентификации

4. Единственная проверка, которую вы показываете нам в коде, касается наличия, и все же ошибка связана с длиной. Где проверка длины и включена ли она :create ?

5. да, это была проблема, отсутствовало: создать для проверки длины. Спасибо. Также есть ли способ проверить, была ли модель успешно сохранена в БД после создания / обновления??