2010-08-03 46 views
5

我有一个轨道模型User,它有name,emailhash字段。before_create in rails model

我做数据储存到这一点:

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

我怎样才能纳入before_create回调,使保存记录之前,哈希值获得通过下面的代码的哈希字符串:

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

我的User模型将如何显示?

class Employee < ActiveRecord::Base 
    before_create :set_hash 

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

顺便说一句,User.create保存用户,所以@ u.save是不必要的。如果您想在创建新模型和保存之间做些什么,请使用User.new和相同的参数。 – Troy 2012-09-01 00:06:24

回答

8

您可以使用self关键字访问(并修改)当前模型的实例变量。

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