Как сделать, чтобы current_user всегда был не нулевым в приложении Rails? - PullRequest
0 голосов
/ 03 марта 2011

Пожалуйста, дайте мне представление о небольшой проблеме: в моем приложении на Rails 3 мне нужно current_user всегда be NOT nil .Я использую Devise и CanCan для аутентификации системы и думаю о том, как реализовать пользователя " guest ".Для ролей типа "admin" он работает нормально (, если current_user.is?: Admin ), но если пользователь не вошел в систему, я хочу проверить не user_signed_in? , но так же( если current_user.is?: Guest ), например.

Я думаю, мне нужно кое-что создать, создавая объект current_user ib перед_фильтрами Application_Controller, но я не знаю, как создать эту глобальную вещьправильный путь.

Спасибо за любые ответы!

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Вы можете попробовать это так:

if current_user.try(:is?, :admin)

Так что не имеет значения, является ли current_user nil

1 голос
/ 03 марта 2011

Если вы используете 'CanCan', вы должны добавить функциональность, как вы упомянули, в свой класс способностей. Например:

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new
    can :manage, :all if user.is? :admin
    can :read, :all if user.is? :guest
  end
end

Для получения дополнительной информации посмотрите вики или посмотрите скриншот:

...