0

ハッシュ後にパスワードを保存しようとしていますが、データベースに 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 を使用しています。

4

1 に答える 1

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

そのため、コールバックが問題になる可能性があります。

于 2013-06-03T08:10:02.327 に答える