找不到current_user方法(Rails,Devise,Cancan)

时间:2013-03-15 23:39:01

标签: ruby-on-rails devise cancan

我将Rails 3.2,Devise和Cancan用于具有3个用户类别的应用程序:公司,客户和管理员。

我的问题是我得到了这个:

undefined local variable or method `current_user' for #<HomeController:0xb4fd217c>

在HomeController中我有:

class HomeController < ApplicationController
  before_filter :authenticate_customer!
  load_and_authorize_resource :class => false

  def index
        render 'index'
    end

end

此外,在视图中:

- content_for :title, 'Home'
= link_to('Logout', destroy_customer_session_path, :method => :delete)

我没有在我的代码中的任何地方调用current_user。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

CanCan对您的申请做出两个假设。

  • 您有一个定义权限的Ability类。
  • 控制器中有一个current_user方法,用于返回当前用户模型。

您可以通过在ApplicationController中定义current_ability方法来覆盖这两者。

https://github.com/ryanb/cancan/wiki/Changing-Defaults