【问题标题】:Sharing ActiveRecord::Base enums across models跨模型共享 ActiveRecord::Base 枚举
【发布时间】:2015-07-18 09:00:48
【问题描述】:

我有 2 个模型

class Author < ActiveRecord::Base
  enum state: [:draft, :ready]
end

class Creation < ActiveRecord::Base
  enum state: [:draft, :ready]
end

如您所见,两个模型都定义了 state 枚举。我想摆脱这种重复并将 state 移到其他地方。

我怎样才能做到这一点,同时保留所有有用的东西,如 Author.ready 以及数据库中的整数和代码中的字符串之间的自动转换。

【问题讨论】:

    标签: ruby-on-rails ruby activerecord enums


    【解决方案1】:

    您可以使用concerns,如下所示。

    module SimpleState
      extend ActiveSupport::Concern
      included do
        enum state: [:draft, :ready]
      end
    end
    

    然后将其包含在您的模型中,如下所示

    #author.rb
    class Author < ActiveRecord::Base
      include SimpleState
    end
    
    #creation.rb
    class Creation < ActiveRecord::Base
      include SimpleState
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多