Password reencriptado?

Hola a todos.
Primero que nada quiero que sepan q’estoy dando mis primeros pasas en
rails?(mas que pasos estoy gateando)…
… bueno, les cuento donde me he frenado…
Estoy creando una pequeña aplicacion para que yo (y algunos amigos)
podamos catalogar nuestras peliculas, musica, etc (es como un videoclub)
todo ok. pero tengo el siguiente problema:

como veras el password en la db se guarda encriptado, el problema se
presenta cuando existe algun problema, como por ejemplo ya existe el
usuario, la app , tira un error no me deja continua y en ese momento el
password ya apacere encriptado, cuando corrijo los datos y le vuelvo a
dar ok entonces me reencripta el password!!!

como puedo solucionar este problema?

Les paso todo el codigo.

he creado un form para crear usuasrio es muy simple. como este:


Registro

<%= error_messages_for 'user' -%> <%= start_form_tag({:action => 'signup'}) -%> Desired Login: <%= text_field :user, :login -%>

Password:
<%= password_field :user, :password -%>

Your Email:
<%= text_field :user, :email -%>

Confirm Email:
<%= text_field :user, :email_confirmation -%>

<%= submit_tag ‘Crear Cuenta’ -%>

<%= end_form_tag %>

mi controlador (user) tiene estos metodos:

def signup
case request.method
when :post
@user = User.new(params[:user])
if @user.save
redirect_to :controller => ‘film’, :action => ‘list’
end
end
end

def login
if session[:user] = User.authenticate(params[:user][:login],
params[:user][:password])
redirect_to :controller => ‘film’, :action => ‘list’
else
redirect_to :controller => ‘film’, :action => ‘list’
end
end

def logout
reset_session
redirect_to :controller => ‘film’, :action => ‘list’
end


y el modelo user esta definido como asi:

def password=(value)
write_attribute(“password”, Digest::SHA1.hexdigest(value))
end

def self.authenticate(login, password)
find(:first, :conditions => [“login = ? and password = ?”, login,
Digest::SHA1.hexdigest(password)])
end