как добавить роли и разрешения в Rails, даже если он уже создан - PullRequest
0 голосов
/ 22 мая 2019

Работа над Devise rails Заявка на проект для аренды вещей за последние два месяца, и теперь проект должен быть изменен, так как он уже отправлен

как мой проект, напишите мне, как изменить маршрут

"Я решил, что мы пойдем на чисто B2B игру. Поэтому частным лицам не будет позволено перечислять оборудование для сдачи в аренду, только проверенные пункты проката / хозяйственные магазины смогут перечислять оборудование для сдачи в аренду. Однако частные лица смогут создавать профиль и делать заказы через платформу, а не сдавать в аренду свое собственное оборудование / инструменты. "

Итак, мой вопрос, должен ли я добавить новую колонку в пользовательском, как

Роли и разрешения в пользовательской колонке Devise:

Пользователь (физические лица),

Администратор (Наши сотрудники),

Компания.

или используйте драгоценный камень, такой как rails-devise-pundit или cancancan, в проект, даже этот проект уже построен.

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

мы можем сделать это, используя cancan gem.

Основные шаги для реализации:

  1. импорт gem в Gemfile

  2. создайте файл способностей с помощью следующей команды

rails g cancan:ability
определяет доступ, как показано ниже.
class Ability
  include CanCan::Ability

  def initialize(user)

    alias_action :create, :read, :update, :destroy, :to => :crud
    if user.super_admin?
        can :access, :rails_admin   # grant access to rails_admin
        can :dashboard              # grant access to the dashboard

        # Accss Level to Models


        can :crud

    end

  end
end

Подробнее см. Документация по драгоценным камням

1 голос
/ 22 мая 2019

Возможно, вы захотите взглянуть на rolify gem.

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

Вот как можно назначить роль пользователю:

user = User.find(1)
user.add_role :admin

Проверьте, есть ли у пользователя роль admin:

user = User.find(1)
user.has_role? :admin
=> true
...