Разработать с CanCan(можно)
Я не могу найти хороший учебник для этого, и я ударил немного стены.
Я использую rails 4.2.0 с базовым приложением CRUD. Для аутентификации я использую devise, а для ролей я использую Cancancan, поскольку они имеют довольно понятную документацию.
У меня есть два типа пользователей:
Пользователи и администраторы.
Администраторы могут взаимодействовать со всеми моделями. Добавить-Редактировать-Удалить и т. Д.
Пользователи могут взаимодействовать только с определенными моделями. Какой будет система бронирования сортов.
Я не совсем уверен в процессе, который мне нужно пройти, чтобы настроить это. Нужно ли делать полное поколение рельсов для каждого типа пользователя или я могу просто использовать поколение Devise? Кроме того, как я могу выбрать тип пользователя? Пока у меня есть две ссылки для входа в систему, которая работает.
Основная проблема, которую я имею, - это определение ролей в канканчане.
Любая помощь / вопросы по этому вопросу будут оценены.
1 ответ
Для простоты вы можете добавить admin
логический столбец в таблице пользователей. Вы бы проверить для администратора с user.admin?
,
Вот как будет выглядеть миграция.
> rails g migration add_admin_to_users
В вашем файле миграции я бы установил значение по умолчанию в false до его запуска.
class AddAdminToUsers < ActiveRecord::Migration
def up
add_column :users, :admin, :boolean, null: false, default: false
end
def down
remove_column :users, :admin
end
end
По умолчанию ваши пользователи не будут администраторами. Тем не менее, вы можете легко сделать пользователя администратором с user.update_column(:admin, true)
,
При этом вы сможете следить за документами CanCanCan, поскольку я считаю, что они довольно обширны.
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.admin?
# admin abilities
else
# non-admin abilities
end
end
end
http://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities