31 março 2011

Devise: Atualizando dados do usuário sem informar a senha

No projeto Rails que estou trabalhando estou utilizando o Devise para autenticação, e tive a necessidade de deixar o usuário alterar seus dados sem precisar informar sua senha.

Após testar algumas opções do how-to do Devise, a melhor forma de fazer isso foi sobrescrever o método update_with_password, adicionando ao model o seguinte método:

  def update_with_password(params={}) 
    if params[:password].blank? 
      params.delete(:password) 
      params.delete(:password_confirmation) if params[:password_confirmation].blank? 
    end 
    update_attributes(params) 
  end

Feito isso, está pronto. Agora os usuário poderão alterar seus dados sem precisar informar a senha, e para alterar a senha basta informar a nova senha e a confirmação da nova senha.

Nenhum comentário: