Cancan авторизация в контроллере Non RESTful - PullRequest
2 голосов
/ 04 февраля 2011

У меня есть такой контроллер, но класс модели не поддерживает его.

class UserInviteController < ApplicationController  
  def process_email  
     authorize! :process_email, :abc  
     ...
     method body
     ...
  end
end

В моем классе способностей у меня есть

can :process_email, :abc if user.role == 1

Я следую вики Авторизация не RESTful Controllers от Cancan , и он говорит, что вы можете передать символ как второй аргумент для авторизации обоих! и может.

Это не обязательно должен быть модельный класс или экземпляр.

Обычно первый аргумент - это "действие", которое пытаются выполнить
и
второй аргумент - это «субъект», над которым выполняется действие. Это может быть что угодно.

Я сделал то же самое, но все равно это не работает.
ПРИМЕЧАНИЕ: я также попытался сделать это наоборот

authorize_resource :class => false

как сказано в вики, но это тоже не работает.

Если это поможет, у моего контроллера нет таких действий, как show, new, create или каких-либо других базовых CRUD-действий.
Канкан: 1.4.1

1 Ответ

3 голосов
/ 04 февраля 2011

Я попытался отладить по ссылке Отладочные способности и выяснил, что не так.

Способности были правильными, я допустил небольшую ошибку, указав их в неправильном порядке.

Если другие пользователи заходят на эту страницу, если у вас возникли проблемы с неработающими способностями Cancan, попробуйте выполнить отладку по приведенной выше ссылке.В конце концов вы поймете, что не работает и почему.

...