2013-03-22 2 views
0
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)

+1

Вы уверены, что пользователь вы передаете инициализировать это * на самом деле * админ? Я бы бросил вызов регистрации как первую строку с 'user.inspect', чтобы убедиться, что у меня есть пользователь admin. Во-вторых, попробовали ли вы 'if user.admin?'. Я предполагаю, что это логическое поле, а не целое. –

ответ

0

В своей работе я должен сделать то же самое, но с Компанией.

создание каждой компании я проверить, если это первый, если я установить его в качестве администратора, в противном случае, обычный пользователь.

if can? используется здесь, чтобы определить, если меню будут скрыты или видны. При этом пользователь будет по-прежнему получать доступ к странице, если он набирает URL-адрес, поэтому вам нужно добавить load_and_authorize_resource, чтобы пользователь получил сообщение о том, что у него нет разрешения.

Это то, что вам нужно? =)

Смежные вопросы