我正在通过 michael hartl 的示例教程学习 rails。在他的最终应用程序中,每个人都必须注册才能做任何事情。我正在尝试制作我的,以便未注册/登录的用户仍然可以查看其他用户的个人资料和他们的微博。问题是当前用户在 app/helpers/sessions_helper.rb 中定义。登录和注销功能基本上是开始或结束会话。
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
def current_user?(user)
user == current_user
end
def signed_in_user
unless signed_in?
store_location
redirect_to signin_path, notice: "Please sign in."
end
end
def sign_out
current_user = nil
cookies.delete(:remember_token)
end
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
clear_return_to
end
所以 current_user 在应用程序的许多其他地方都使用了。这意味着每当我尝试将未签名的用户链接到页面时,无论使用 current_user 表示 current_user 未定义(这当然是真的),都会出现错误。我该如何解决这个问题。有没有办法将未登录用户临时定义为当前用户的一种形式。我可以在当前用户的定义中添加一些内容吗?
编辑:错误发生在很多地方。每当未登录用户访问使用当前用户的页面时,它都会给出一个错误,例如未定义的方法“admin?” 对于零:NilClass。这个例子在代码中写着 current_user.admin?