require 'digest/sha1' class User < ActiveRecord::Base validates_presence_of :name validates_uniqueness_of :name attr_accessor :password_confirmation validates_confirmation_of :password attr_reader :password def password=(pwd) @password = pwd create_new_salt self.hashed_passwd = User.encrypted_password(self.password, self.salt) end def validate erros.add_to_base("パスワードを入力してください") if hashed_passwd.blank? end def self.authenticate(name, password) user = self.find_by_name(name) if user expected_passowrd = encrypted_password(passowrd, user.salt) if user.hashed_passwd != expected_passowrd user = nil end end user end private def self.encrypted_password(password, salt) string_to_hash = password + "cancerehr" + salt Digest::SHA1.hexdigest(string_to_hash) end def create_new_salt self.salt = self.object_id.to_s + rand.to_s end end