Прямо сейчас пользователи могут редактировать некоторые свои атрибуты без необходимости вводить свой пароль, потому что мои проверки настроены следующим образом:
validates :password, :presence =>true, :confirmation => true, :length => { :within => 6..40 }, :on => :create
validates :password, :confirmation => true, :length => { :within => 6..40 }, :on => :update, :unless => lambda{ |user| user.password.blank? }
Однако после пользователя при этом их пароль удаляется - update_attributes обновляет их пароль на "". Вот мое определение обновления:
def update
if @user.update_attributes(params[:user])
flash[:success] = "Edit Successful."
redirect_to @user
else
@title = "Edit user"
render 'edit'
end
end
Я также пробовал использовать другое определение, которое вместо этого использует update_attribute:
def save_ff
@user = User.find(params[:id])
@user.update_attribute(:course1, params[:user][:course1] )
@user.update_attribute(:course2, params[:user][:course2] )
@user.update_attribute(:course3, params[:user][:course3] )
@user.update_attribute(:course4, params[:user][:course4] )
redirect_to @user
end
Но по какой-то причине это делает то же самое. Как я могу обновить некоторые атрибуты пользователя без изменения пароля? Спасибо!