开发者

CANCAN undefined method `user_type?' for "admin":String

here is my problem:

I'm using cancan gem. I think all is set up well, except for one thing, that produces undefined method 'user_type?' for "admin":String.

Here is my ability.rb

class Ability
  include CanCan::Ability
  def initialize(user)
       user ||= User.new # guest user
       if user.user_type? :admin
         can :manage, :all
       # [code code code code commented to find more easily the problem]
        else
          can :read, :all
        end
  end
end

My user.rb

require 'digest/sha2'

class User < ActiveRecord::Base
  #definisco i ruoli
  ROLES = %w[admin client banned]
  default_scope :order => 'user' [...]

I can't 开发者_JS百科figure out what I have to modify. Why if user.user_type? :admin don't check the current user attribute? Thanks a lot for your attention!

UP: Ok, I read around that cancan need method "current_user" declared in application controller. Now I work on it. News, soon.


You should do like this.I think it is better approach.

Seed roles into DB.

And in application helper paste this code.

def is_admin?(user)
  admin_role = Role.find(:first, :conditions => ["name = ?", "admin"])
  return user.roles.include?(admin_role)
end

And then in ability call like

            class Ability
             include CanCan::Ability
             def initialize(user)
               user ||= User.new # guest user
                 if is_admin?(user)
                   can :manage, :all
                    # [code code code code commented to find more easily the problem]
                 else
                   can :read, :all
                 end
             end
           end

And it will work fine.......

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜