0

我正在通过 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?

4

1 回答 1

0

这个 railscast展示了如何使用 cancan 进行授权,包括如何处理未登录的用户。

于 2012-08-09T18:30:20.403 回答