0

我正在尝试使用 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
4

1 回答 1

0

我同意贝拉的观点,即这是重复的。但是,如果原始答案不够清楚,这里有分步说​​明。

要添加password_digest到您的用户模型...

在控制台中执行:

$ rails generate migration AddPasswordDigestToUsers

这将创建一个类似的文件:(文件开头的十四位数字将与我的不同,因为它基本上是您运行生成命令时的时间戳。您可以在此处/db/migrate/20120419234606_add_password_digest_to_users阅读有关生成独立迁移的更多信息。)

打开您刚刚创建的迁移文件并进行编辑,使其看起来像这样:

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属性,并且(希望)您不会再收到错误。

于 2012-07-18T21:10:47.627 回答