哈希密码存储为NULL:Ruby on rails

时间:2013-06-03 05:39:29

标签: ruby-on-rails ruby

我试图在哈希之后存储密码,但它在数据库中显示为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。

1 个答案:

答案 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

所以回调可能就是问题。