加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – Rails – undefined方法`authenticate’

发布时间:2020-12-17 01:37:13 所属栏目:百科 来源:网络整理
导读:我在尝试验证用户时收到以下错误. NoMethodError(未定义的methodauthenticate’代表#)` 当我从rails控制台执行命令时,user.authenticate(‘password’)成功(即返回用户对象). irb(main):008:0 user.authenticate("sanket")= #User id: 2,name: "Sanket",emai
我在尝试验证用户时收到以下错误.

NoMethodError(未定义的methodauthenticate’代表#)`

当我从rails控制台执行命令时,user.authenticate(‘password’)成功(即返回用户对象).

irb(main):008:0> user.authenticate("sanket")
=> #<User id: 2,name: "Sanket",email: "sanket.meghani@infibeam.net",created_at: "2014-02-14 08:58:28",updated_at: "2014-02-14 08:58:28",password_digest: "$2a$10$KNuBgvqVDIErf3a24lMcaeNt1Hyg0I8oreIQSEYsXY4T...",remember_token: "3b64273a4fcced7c8bf91f7f7490e60a5919658d">

但是,当我将user.authenticate放在帮助器类中,并使用url访问它时,它说

未定义的方法’authenticate’用于#< ActiveRecord :: Relation:0x007fd9506dce38>

我跟随Rails Tutorial

我的用户模型如下:

class User < ActiveRecord::Base        
    attr_accessible :email,:name,:password,:password_confirmation
    has_secure_password

    .
    .
    .
end

session_helper.rb中的相关方法如下所示:

def create
    user = User.where(:email => params[:session][:email].downcase)

    if user && user.authenticate(params[:session][:password])
        sign_in user
        redirect_to user
    else
        flash.now[:error] = 'Invalid email/password combination'
        render "new"
    end
end

如果用户&& user.authenticate(params [:session] [:password])行.

让我感到惊讶的是,它是从rails控制台运行的,但同样的调用无法从rails服务器运行.

解决方法

正如您在错误中看到的那样,返回关系,而不是单个对象.

检查相关问题:Why does a single record lookup return an array? (Rails beginner)

在您的情况下,您可以先添加到方法链的末尾,因此它将返回此关系的第一个元素:

user = User.where(:email => params[:session][:email].downcase).first

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读