Доступ к вспомогательным методам Devise из CanCan и т. Д. - PullRequest
1 голос
/ 25 ноября 2010

Это кажется простым вопросом, который я просто не могу обернуть.

Использование Devise для аутентификации и CanCan для авторизации в новом приложении Rails 3.

Как я могуметоды доступа, определенные в ApplicationController в классе Ability, который предоставляет CanCan?

, что-то вроде этого:

class Ability

  include CanCan::Ability

  def initialize(user)

    user ||= User.new # Guest user.

    can :create, Post if user_signed_in?

  end
end

, где user_signed_in? определено в ApplicationController.

1 Ответ

3 голосов
/ 25 ноября 2010

Возможно, это не тот ответ, который вы хотели, но, похоже, вы хотите смешать проблемы кода, которые не следует смешивать.

Это хорошая идея, чтобы получить доступ к user_signed_in? в правилах авторизации?... Поскольку авторизация касается только того, что кто-то может сделать, и не должна интересовать, аутентифицирован ли кто-то (или нет).

A перед фильтром (before_filter :authenticate_user!) на контроллере сообщений для проверкитого, что ваш пользователь прошел аутентификацию, должно быть достаточно для достижения вашей цели;Ваши правила авторизации могут выполняться вместе с проверкой аутентификации, а не смешиваться с ее кодом.

Это многоуровневый подход: -)

...