Подтвердить что ты не робот

Доля значений декларации перечисления между моделями

Я применяю enum к следующему атрибуту: transparency

Тот же атрибут (с перечислением) используется в двух разных моделях: Category и Post

Можно ли делиться значениями перечисления между моделями, чтобы избежать дублирования кода:

enum transparency: %w(anonymous private public)
4b9b3361

Ответ 1

Вы можете использовать concern.

module HasTransparency
  extend ActiveSupport::Concern
  included do
    enum transparency: %w(anonymous private public)
  end
end

Затем включите его в свои модели:

class Category < ActiveRecord::Base
  include HasTransparency

  ....
end

Ответ 2

Альтернативой "правильному пути" использования проблемы или модуля вы можете просто ссылаться на другое перечисление класса. Он отлично работал у меня:

enum same_values_than_other: SomeOtherClass.my_awesome_enum