Rails: как динамически создавать роли для Rolify

Я следил за учебником rolify, изучил некоторые основные способы использования. https://github.com/RolifyCommunity/rolify/wiki/Devise---CanCanCan---rolify-Tutorial

На данный момент единственный способ создать роль — это что-то вроде user.add_role "admin" в консоли. Я хочу создать роли, добавив действия ресурсов, после чего пользователь-администратор сможет назначать роли пользователям. Я не знаю, как этого добиться, я сделал набросок, чтобы показать свою цель. Кто-нибудь может дать мне несколько идей, чтобы сделать это?

введите здесь описание изображения


person Marco    schedule 09.12.2016    source источник


Ответы (1)


создать модель:

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users, :join_table => :users_roles
  belongs_to :resource, :polymorphic => true

  validates :resource_type,
            :inclusion => { :in => Rolify.resource_types },
            :allow_nil => true 
  scopify
end

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

Если вы хотите добавить роли через пользовательскую модель, например, из выберите раскрывающийся список, возьмите Roles.all и передайте его своему выбору.

person ClassyPimp    schedule 09.12.2016
comment
почему вы разрешаете nil для resource_type? Если ваша роль не связана с ресурсом, она не должна быть действительной. (?) - person theDrifter; 09.12.2016
comment
Этот код модели на самом деле является тем, что находится в rolify gem, поэтому, вероятно, allow_nil необходим внутри rolify. Вы на самом деле можете даже не определять эту модель. Но вы должны сделать это только для лучшего контроля над ним, чтобы знать, что он есть, и для более поздней логики, которую вам потенциально нужно будет реализовать в роли, чтобы вы знали, где ее добавить. - person ClassyPimp; 09.12.2016