我正在尝试使用has_secure_password进行示例登录。添加了gem文件,但此错误仍然存在:
undefined local variable or method `password_digest' for #<User:0x23129a0>
app/controllers/sessions_controller.rb:8:in `create'
在此档案中
sessions_controller.rb
第8行看起来像这样:
if user and user.authenticate(params[:password])
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by_name(params[:name])
if user and user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to admin_url , notice: "Login efetuado com sucesso."
else
flash[:notice] = 'Usuario ou senha errados'
redirect_to login_url
end
end
def destroy
session[:user_id] = nil
redirect_to login_url, notice: "Logout Efetuado com sucesso."
end
end
答案 0 :(得分:0)
我同意贝拉的观点,认为这是重复的。但是,如果原始答案不够明确,这里有逐步说明。
将password_digest
添加到您的用户模型...
在控制台中执行:
$ rails generate migration AddPasswordDigestToUsers
这将创建一个类似于/db/migrate/20120419234606_add_password_digest_to_users
的文件(文件开头的十四个数字将与我的不同,因为它基本上是您运行generate命令时的时间戳。您可以阅读更多信息生成独立迁移here。)
打开刚刚创建的迁移文件并进行编辑,使其看起来像这样:
class AddPasswordDigestToUsers < ActiveRecord::Migration
def change
add_column :users, :password_digest, :string
end
end
保存并关闭文件。然后,在控制台中,运行:
$ bundle exec rake db:migrate
$ bundle exec rake db:test:prepare
此时,您的用户模型应该具有password_digest
属性,并且(希望)您不会再出现错误。