2010-08-03 5 views
5

name, emailhash 필드가있는 User 레일 모델이 있습니다.레일 인 모델에서 before_create

나는 수행하여이 데이터를 저장합니다

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

가 어떻게이 before_create 콜백을 통합 할 수 있도록하는 해시 값은 다음 코드에 의해 해시 문자열을 얻는 기록을 저장하기 전에 :

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

을 내 User 모델의 모습은 어떻습니까?

+4

덧붙여서 User.create는 사용자를 저장하므로 @u.save는 필요하지 않습니다. 새 모델을 만들고 저장하는 중에 뭔가를하고 싶다면 동일한 매개 변수로 User.new를 사용하십시오. – Troy

답변

8

self 키워드를 사용하여 현재 모델의 인스턴스 변수에 액세스하고 변경할 수 있습니다.

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