简体   繁体   中英

CanCan - How to setup a modeless Controller?

I have a User Model, with a admin boolean field. I then have an Admin Controller which I want CanCan On.

How do I add CanCan to the Admin Controller as there is not Admin Model?

I've tried:

class AdminController < ApplicationController
  load_and_authorize_resource :user
  load_and_authorize_resource :admin, :through => :user


class Ability
   include CanCan::Ability
   def initialize
         ....
         can :manage, Admin if current_user.admin == TRUE
         ....

But that errors with "Access denied on nil"

Ideas? Thanks

Are you sure you have access to the 'current_user' method in your ability class? I wouldn't think you would have.

For what I remember when using CanCan you could have this in your Ability class:

def initialize(user)
    user ||= User.new #guest user.
...
end

And the user would be the current user, I expect. And I guess that should work.

You can also take a look at this page: https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers of the CanCan wiki. It's not exactly the same issue, but as it covers a special case (Non-RESTful-Controllers) it might give you some hints about how to do what you want to do.

Cheers

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM