Почему я НЕ могу получить доступ к действию для контроллера, который я опускаю из оператора filter_access_to в Rails 3? - PullRequest
1 голос
/ 05 марта 2011

Я использую Declarative_Authorization и у меня есть следующее в контроллере:

filter_access_to :index, :new, :edit, :step, :create, :update, :destroy

Осталось два действия. :show, :compare. Однако, когда я перехожу по URL-адресу для любого из этих действий, он отправляет меня на экран входа в систему.

Почему это?

Разве не должны быть пропущены действия, позволяющие мне видеть его, когда я не вошел в систему, учитывая, что на этом контроллере нет других фильтров (за исключением, может быть, чего-либо унаследованного от ApplicationsController)?

1 Ответ

3 голосов
/ 05 марта 2011

Это не должно быть связано с декларативным_авторизацией ... это домен Devise (или каков ваш механизм аутентификации).Вместо этого измените before_filter, который проверяет, аутентифицирован ли пользователь, чтобы включить исключение для действий, которые вы хотите пропустить.

например.измените before_filter :authenticate_user! на before_filter :authenticate_user!, :except=>[:public_action, :other_public_action].

Кроме того, если ваш before_filter установлен внутри вашего контроллера приложений, вы можете просто переопределить его внутри контроллера, для которого вы хотите иметь исключение (я), и сделать там моды..

...