2010-08-03 10 views
5

Tengo un modelo de rieles User que tiene name, email y hash campos.before_create in rails model

que guardar los datos en esto haciendo:

@u = User.create(:name=>'test', :email=>"[email protected]") 
@u.save 

¿Cómo puedo incorporar la devolución de llamada before_create de manera que antes de guardar el registro del valor hash se pone una cadena hash siguiente código:

Digest::SHA1.hexdigest('something secret' + email) 

¿Cómo será mi modelo User?

class Employee < ActiveRecord::Base 
    before_create :set_hash 

    def set_hash 
     //what goes in here? 
    end 
end 
+4

Dicho sea de paso, User.create guarda el usuario, por lo que @ u.save no es necesario. Si desea hacer algo entre crear un nuevo modelo y guardar, use User.new con los mismos parámetros. – Troy

Respuesta

8

Puede acceder (y modificar) las variables de instancia de su modelo actual utilizando la palabra clave self.

def set_hash 
    self.email = Digest::SHA1.hexdigest('something secret' + self.email) 
end