#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. да, это была проблема, отсутствовало: создать для проверки длины. Спасибо. Также есть ли способ проверить, была ли модель успешно сохранена в БД после создания / обновления??