Я относительно новичок в rails (3) и создаю приложение, используя CanCan, где есть 3 уровня пользователей.
- Гость - незарегистрированный посетитель Пользователь
- зарегистрированный и зарегистрированный посетитель
- Администратор - зарегистрирован и зарегистрирован посетитель с флагом администратора
Моя способность сейчас болотная, скопированная из cancan docs, в основном определяющая роль гостя и роль администратора
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
Но это просто не так. Кажется, что он отстранен от, как, собственно, зарегистрированный в журнале, и беспокоится о том, действительно ли он защищен.
Ищите совет по более элегантному способу этого.
Спасибо!