Обновление атрибутов `User` без запроса пароля

Прямо сейчас пользователи могут редактировать некоторые свои атрибуты без необходимости вводить свой пароль, потому что мои проверки настроены следующим образом:

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 

Но по какой-то причине это делает то же самое. Как я могу обновить некоторые атрибуты пользователя без изменения пароля? Спасибо!

26
задан steffi2392 16 August 2011 в 19:02
поделиться