我试图在哈希之后存储密码,但它在数据库中显示为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。
答案 0 :(得分:0)
我认为你应该使用
before_create :hash_the_password
after_create :nil_the_password
def hash_the_password
self.hashed_password = User.hash_password(self.password)
end
def nil_the_password
@password = nil
end
而不是
#Wrong?
def before_create
...
end
所以回调可能就是问题。