class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.admin == 1 #admin
can :manage, :all
elsif
user.id != nil # registred users
can :read, :all
can :create, Post
cannot :manage, User
else
can :read, :all # guest user (not logged in)
cannot :manage, User
end
Вот мой файл возможностей. Я хочу, чтобы первый зарегистрированный пользователь был администратором и предоставил им все права на редактирование всей веб-страницы, в то время как Пользователь имеет ограниченный доступ только к управлению сообщениями и гостю. Пользователь может читать только сообщения. Однако, когда я использую , если можно? в моем коде администратор получает тот же доступ, что и обычный пользователь. Что я делаю не так?Как сделать первого пользователя администратором с файлом способности (cancan)
Вы уверены, что пользователь вы передаете инициализировать это * на самом деле * админ? Я бы бросил вызов регистрации как первую строку с 'user.inspect', чтобы убедиться, что у меня есть пользователь admin. Во-вторых, попробовали ли вы 'if user.admin?'. Я предполагаю, что это логическое поле, а не целое. –