无法使用has_secure_password,password_digest错误

Pav*_*vel 11 ruby authentication ruby-on-rails-3.1

晚上好.我有个问题.我正在使用has_secure_password 和导致这个我有一个错误undefined methodpassword_digest ='for#`,

但我没有这种方法!请帮忙,不知道该怎么办.我读了如何解决这个问题,但它没有帮助我(

这是我的用户模型.如果可以的话请帮忙.

class User < ActiveRecord::Base

  attr_accessible :email, :password, :password_confirmation
  has_secure_password

  validates_presence_of :password, :on => :create

  before_create { generate_token(:auth_token) }

  def send_password_reset
    generate_token(:password_reset_token)
    self.password_reset_sent_at = Time.zone.now
    save!
    UserMailer.password_reset(self).deliver
  end

  def generate_token(column)
    begin
      self[column] = SecureRandom.urlsafe_base64
    end while User.exists?(column => self[column])
  end
end
Run Code Online (Sandbox Code Playgroud)

小智 26

您可能忘记确保支持用户模型的迁移有一个password_digest列.确保列存在且它是一个字符串.如果没有,请创建迁移以添加列.


Imr*_*mad 5

has_secure_password将密码存储在password_digest列而不是password列中的模型。事实上密码栏是不需要的。

> u=User.create!(email: 'user@gmail.com', password: '12345678')
> u
#<User:0x007fc794be9278> {
                  :id => 1,
:email => "user@gmail.com",
     :password_digest => "$2a$10$S82GVFR..yO9jihgIoeMj.7dNMWtbCUZpWDKvH0tyMs1SYlfdefmW"
}
Run Code Online (Sandbox Code Playgroud)