无法使用has_secure_password,password_digest错误

晚上好。 我有个问题。 我正在使用has_secure_password ,因此我有一个错误undefined method password_digest =’for#`,

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

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

 class User  :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 

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

我有同样的问题,我关注http://www.railstutorial.org/book/modeling_users ,我的app/Controllers/users_controllers.rb没有创建属性的方法,我也用git分享工作便携式笔记本电脑和大型家庭之间的代码,这创建了迁移文件,但没有应用它,我的工作用户控制器在下面。

 class UsersController < ApplicationController def new attr_accessor :name, :email, :password def initialize(attributes = {}) @name = attributes[:name] @email = attributes[:email] @password = attributes[:password] end def formatted_email "#{@name} <#{@email}>" end end 

嘿,我也在关注RoR并遇到同样的问题。 这里的技巧是你的bundle exec rake db:migrate失败,因此password_digest列没有被添加到数据库中。 我的控制台抱怨用户数据库已经存在 。 我使用“SQLite Browser”删除了db/development.sqlite3 。 运行bundle exec rake db:migrate ,每次测试都通过

具有has_secure_password模型在password_digest列中存储密码而不是密码列。 实际上不需要密码列。

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