繁体   English   中英

如何修复find_by(remember_token:Remember_token)

[英]How do I fix find_by(remember_token: remember_token)

我在Michael Hardtl撰写的Rails教程的第8章中。 我已经多次阅读了这段代码,并在stackoverflow上看到了一些类似的问题,但是没有一个有帮助。 我正在尝试制作一个简单的登录页面。 我很确定这条线有问题

@current_user ||= User.find_by(remember_token: remember_token)  

我之前尝试过使用find_by方法,但它不起作用。 如果我在find_by后面附加一个_,然后像下面这样查找,通常可以正常工作:

@current_user ||= User.find_by_remember_token(remember_token)

但这也不起作用。 这是我下面的完整代码。 谢谢任何可以帮助我的人!

module SessionsHelper
    def sign_in(user)
        remember_token = User.new_remember_token
        cookies.permanent[:remember_token] = remember_token
        user.update_attribute(:remember_token, User.encrypt(remember_token))
        self.current_user = user
    end

    def current_user=(user)
        @current_user = user
    end

    def current_user
        remember_token = User.encrypt(cookies[:remember_token])
        @current_user ||= User.find_by(remember_token: remember_token) #The find_by method might not work
    end

    def signed_in?
        !current_user.nil?
    end
end

这是我尝试打开页面时浏览器所说的:

NoMethodError in Static_pages#home

Showing /Users/philip7899/rails/sample_app/app/views/layouts/_header.html.erb where line #9 raised:

undefined method `find_by' for User(Table doesn't exist):Class

认为rails教程书假定您在rails 4和rails 4上运行,所有动态查找器已被弃用。 由于您是在3.2上运行,因此您要走的路是

@current_user ||= User.where( remember_token : remember_token ).first

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM