2012-07-18 3 views
0

has_secure_password를 사용하여 샘플 로그인을하려고합니다. 이 같은로그인 레일 3 "SessionsController #에서 NameError 생성"

sessions_controller.rb 

라인 8 개 모습을이 파일에서

undefined local variable or method `password_digest' for #<User:0x23129a0> 
app/controllers/sessions_controller.rb:8:in `create' 

: 보석 파일이 추가되지만이 오류가 계속

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

안녕하세요. 단지베이스를 커버하기 위해 1) 사용자 모델에 user_rb 파일에'has_secure_password'를 추가하고 2) 마이 그 레이션을 통해 사용자 모델에 기인 한'password_digest'를 추가 했습니까? – jvillian

+0

이것은 다음과 같습니다. http://stackoverflow.com/questions/7759025/cant-use-has-secure-password-password-digest-error – bento

+0

"사용자 모델에 할당되었습니다"를 어떻게 추가합니까? 내 모델 사용자는 다음과 같습니다 : class User Overduka

답변

0

내가 동의 Béla는이 사본입니다. 그러나 원래의 대답이 충분히 명확하지 않은 경우를위한 단계별 지침이 있습니다.

이 ... 사용자 모델에 password_digest를 추가하려면 콘솔에서

는 수행 파일의 시작 부분에 /db/migrate/20120419234606_add_password_digest_to_users (열네 자리 :

$ rails generate migration AddPasswordDigestToUsers 

이 같은 파일 무언가를 창조한다 기본적으로 생성 명령을 실행 한 시간 스탬프이기 때문에 광산과 다를 것입니다. 독립 실행 형 마이그레이션 생성에 대한 자세한 내용은 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 속성과를 가져야한다 (희망) 당신이 더 이상 오류가 발생하지 않습니다.

+0

내가이 문제를 해결하기 전에 고맙다. 해결책은이 colunm password_digest를 만들고 새로운 사용자, 잘 실행하십시오. 모두를위한 감사합니다. – Overduka

관련 문제