Ruby on Rails Global ActiveRecord:: Enum

Мне очень нравится Rails 4 новая функция Enum, но я хочу использовать свой enum

enum status: [:active, :inactive, :deleted]

в каждой модели. Я не могу найти способ объявить, например, в config/initializes/enums.rb и включить каждую модель

Я очень новичок в Ruby on Rails и нуждаюсь в вашей помощи, чтобы найти решение

+4
19 сент. '14 в 15:22
источник поделиться
2 ответа

Используйте ActiveSupport::Concern эту функцию, созданную для dry для кодов моделей:

#app/models/concerns/my_enums.rb
module MyEnums
  extend ActiveSupport::Concern

  included do
    enum status: [:active, :inactive, :deleted]
  end
end

# app/models/my_model.rb
class MyModel < ActiveRecord::Base
  include MyEnums
end

# app/models/other_model.rb
class OtherModel
  include MyEnums
end

Read more

+17
19 сент. '14 в 15:58
источник

Я думаю, вы могли бы использовать модуль, содержащий это перечисление, тогда вы можете включить в каждый модуль, который хотите использовать:

# app/models/my_enums.rb
Module MyEnums
  enum status: [:active, :inactive, :deleted]
end

# app/models/my_model.rb
class MyModel < ActiveRecord::Base
  include MyEnums
end

# app/models/other_model.rb
class OtherModel
  include MyEnums
end
0
19 сент. '14 в 15:35
источник

Посмотрите другие вопросы по меткам или Задайте вопрос