Rails 3.2 - 应用程序控制器+设计Current_user问题

时间:2012-03-14 20:31:07

标签: authentication devise mime-types cancan ruby-on-rails-3.2

我在用户模型中定义了两个角色:

User.role == admin
or
User.role == basic

在我的应用程序控制器

include MobilizedController

lib / mobilized_controller.rb

module MobilizedController
  extend ActiveSupport::Concern

  included do
    before_filter :set_basic_request, :if => :basic_logged_in?
  end 

  private

  def set_basic_request
    request.format = :basic
    prepend_view_path "app/views/basic"
  end 

  def basic_logged_in?
    current_user.role == 'basic'
  end 
end

当我登录时,这一切都很好,它正确设置Mime类型并呈现我的基本视图。 不幸的是,当我没有登录时,我得到了:

  

nil的未定义方法'角色':NilClass

我猜这意味着current_user没有设置,因此调用它就不起作用。

有没有人对此有任何建议?如果用户未登录,我需要能够呈现默认登录页面,然后在登录时设置Mime类型。

任何帮助?

1 个答案:

答案 0 :(得分:0)

在basic_logged_in的示例中,将current_user.role设置为basic。您似乎没有为管理员或未登录的用户设置角色。

因此,如果您未登录或以管理员身份登录,则不会设置current_user.role。