2012-07-18 35 views
0

我正在嘗試使用has_secure_password進行示例登錄。寶石文件將被添加,但這個錯誤仍然存​​在:錯誤登錄Rails 3「名稱錯誤在SessionsController#創建」

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

你好。爲了覆蓋這些基礎,你是否1)向你的用戶模型(在user.rb文件中)添加了'has_secure_password',並且2)添加了屬於你的用戶模型的'password_digest'(通過遷移)? – jvillian 2012-07-18 16:10:55

+0

這是一個重複的:http://stackoverflow.com/questions/7759025/cant-use-has-secure-password-password-digest-error – bento 2012-07-18 16:45:38

+0

我如何添加「歸因於您的用戶模型」?我的模型用戶是:'class User Overduka 2012-07-18 18:26:24

回答

0

我同意貝拉,這是重複的。但是,如果原始答案不夠清楚,以下是一步一步的說明。

要將password_digest添加到您的用戶模型......

在控制檯做:在你的文件的開頭/db/migrate/20120419234606_add_password_digest_to_users(十四位數:

$ rails generate migration AddPasswordDigestToUsers 

這將創建一個文件類似將與我的不同,因爲它基本上是運行生成命令時的時間戳。有關生成獨立遷移的更多信息,請參閱here。)

打開遷移文件,您只需c重新編輯,因此它看起來像這樣:

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 2012-07-18 22:00:51

相關問題