Как использовать enum для таблицы отношений?

У меня есть статичные данные с правами, мне не нужно их хранить в базе данных и создавать таблицу с разрешениями, я хочу использовать Enum

enum permission: [:show, :create, :update, :destroy]

Что нужно сделать в моделях, чтобы я мог при вызове использовать Enum для роли:

Role.first.permission
=>"create"

I have migration:

class CreateRoles < ActiveRecord::Migration
  def change
    create_table :roles do |t|
        t.string :name
    end
  end
end

class CreateCompanies < ActiveRecord::Migration
  def change
    create_table :companies do |t|
      t.string :name
    end
  end
end

class CreateCompaniesRoles < ActiveRecord::Migration
  def change
    create_table :companies_roles do |t|
      t.integer :company_id
      t.integer :role_id
      t.integer :permission
    end
  end
end

schema in DB

Все связи многие ко многим.


Ответы (1 шт):

Автор решения: Василиса

В моем проекте это реализовано через разные роли, по типу

employee_admin
employee_manager
employee_viewer

И на мой взгляд это более простой вариант. Но если вы хотите так, то вам нужно будет искать CompanyRole по айдишнику пользователя и компания и смотреть в её permission

CompanyRole.find_by(company_id: record.id, user_id: user.id).permission
→ Ссылка