Теперь пользователи могут редактировать некоторые свои атрибуты, не вводя их пароль, потому что мои проверки настроены следующим образом:
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
Но по какой-то причине это делает то же самое. Как я могу обновить некоторые пользовательские атрибуты без изменения пароля? Спасибо!