Разработать с 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

Другие вопросы по тегам