我试图在散列密码后存储密码,但它在数据库中显示为 NULL。我使用密码字符串和名称字符串为用户生成了一个脚手架,然后更改了 mysql 表以存储散列密码,而不是使用这个:
ALTER TABLE users CHANGE password hashed_password CHAR(40) NULL;
我的模型:
class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :name, :password
validates :name, :uniqueness => true
validates :password, :length => { :in => 6..20 }
def before_create
self.hashed_password = User.hash_password(self.password)
end
def after_create
@password = nil
end
private
def self.hash_password(password)
Digest::SHA1.hexdigest(password)
end
end
我正在使用 Rails 3.2.13。