2010-08-03 33 views
5

Tôi có một mẫu ray User có các trường name, emailhash.before_create in rails model

tôi lưu dữ liệu vào điều này bằng cách thực hiện:

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

Làm thế nào tôi có thể kết hợp các before_create gọi lại để trước khi lưu kỷ lục giá trị băm được một chuỗi hash bằng đoạn mã sau:

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

Mô hình User của tôi sẽ như thế nào?

class Employee < ActiveRecord::Base 
    before_create :set_hash 

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

Ngẫu nhiên, User.create lưu người dùng, vì vậy @ uave là không cần thiết. Nếu bạn muốn làm điều gì đó giữa tạo mô hình mới và lưu, hãy sử dụng User.new với cùng các tham số. – Troy

Trả lời

8

Bạn có thể truy cập (và thay đổi) các biến mẫu của mô hình hiện tại bằng từ khóa tự.

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