2012-07-18 47 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