在模型之间共享枚举声明值

时间:2015-04-04 20:38:12

标签: ruby-on-rails rails-activerecord ruby-on-rails-4.2

我在以下属性上应用enumtransparency

相同的属性(包含枚举)用于两个不同的模型:CategoryPost

是否可以在模型之间共享枚举值,以避免代码重复:

enum transparency: %w(anonymous private public)

2 个答案:

答案 0 :(得分:20)

您可以使用concern

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

然后将其包含在您的模型中:

class Category < ActiveRecord::Base
  include HasTransparency

  ....
end

答案 1 :(得分:4)

使用关注点或模块的“正确方法”的替代方法,您可以引用另一个类枚举。它对我很有用:

enum same_values_than_other: SomeOtherClass.my_awesome_enum