如何正确定义Ability.rb(CanCan)?

时间:2012-05-17 05:00:57

标签: ruby-on-rails-3 cancan

我试图将自己的能力定义如下:

class Ability
  include CanCan::Ability

  def initialize(user)

    user ||= User.new # guest user (not logged in)

    if user.role == 'admin'
      can :manage, :all
    elsif user.role == 'member'
      can :manage, [User,Post] , :id => user.id
      cannot :index, User # list users page
    else
      can :read, :all
    end
  end
end

已将load_and_authorize_resource添加到PostsController之上。

如果我理解这些定义,访客用户应该无法访问create中的PostsController操作,但他们会这样做。

对此行为的任何解释?

修改

解决!

刚才意识到我忘记添加before_filter :authenticate_user!,因为我正在使用Devise进行身份验证。

1 个答案:

答案 0 :(得分:0)

解决!

刚才意识到我忘记添加before_filter :authenticate_user!,因为我正在使用Devise进行身份验证。