RoR:我如何让未签名的用户查看网站上的内容?

时间:2012-08-08 21:55:06

标签: ruby-on-rails-3

我正在通过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是未定义的(当然这是真的)。我怎么能解决这个问题呢。有没有办法临时在用户中定义unsigned作为当前用户的形式。我可以在当前用户的定义中添加一些内容吗?

编辑:错误发生在多个地方。任何时候,一个未签名的用户访问使用当前用户的页面,它会给出一个错误,如未定义的方法`admin?'为零:NilClass。这个例子在代码中的某个位置显示current_user.admin?

1 个答案:

答案 0 :(得分:0)

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