Я относительно новичок в rails (3) и собираю приложение, используя CanCan, где есть 3 уровня пользователей.
- Гость - незарегистрированный пользователь Пользователь
- зарегистрирован и вошел в систему посетитель
- Admin - зарегистрирован и авторизирован
посетитель с флагом администратора
Моя способность прямо сейчас - скопированная из документов cancan, в основном определяющая роль гостя и роль администратора
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # Guest user
if user.is_admin?
can :manage, :all
else
can :read, [Asana,Image,User,Video,Sequence]
end
end
end
Я ищу, чтобы добавить в роли пользователя. Так как я создаю эту одноразовую пользовательскую модель, я подумал об использовании new_record? определить, вошел ли пользователь в систему или нет. Что-то вроде:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # Guest user
if !user.new_record? and user.is_admin?
can :manage, :all
elsif !user.new_record? and !user.is_admin?
can {registered user-y permissions}
else
can :read, [Asana,Image,User,Video,Sequence]
end
end
end
Но это просто нехорошо. Кажется, что-то вроде отсоединения от, например, фактического входа в систему, и беспокоится о том, действительно ли это безопасно.
Нужны советы по более элегантному способу сделать это.
Спасибо!