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(ファイルの先頭にある 14 桁は、基本的には生成コマンドを実行したときのタイム スタンプであるため、私のものとは異なります。スタンドアロン マイグレーションの生成の詳細については、こちらを参照してください。)

作成した移行ファイルを開き、次のように編集します。

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 に答える