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