我在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
答案 0 :(得分:1)
认为rails教程书假设您在rails 4和rails 4中运行,所有动态查找器都已弃用。由于你在3.2上运行,你可以选择
@current_user ||= User.where( remember_token : remember_token ).first