【发布时间】:2015-06-09 15:56:10
【问题描述】:
我在以下属性上应用enum:transparency
在两个不同的模型中使用相同的属性(带有枚举):Category 和 Post
是否可以在模型之间共享枚举值,以避免代码重复:
enum transparency: %w(anonymous private public)
【问题讨论】:
标签: ruby-on-rails rails-activerecord ruby-on-rails-4.2
我在以下属性上应用enum:transparency
在两个不同的模型中使用相同的属性(带有枚举):Category 和 Post
是否可以在模型之间共享枚举值,以避免代码重复:
enum transparency: %w(anonymous private public)
【问题讨论】:
标签: ruby-on-rails rails-activerecord ruby-on-rails-4.2
您可以使用concern。
module HasTransparency
extend ActiveSupport::Concern
included do
enum transparency: %w(anonymous private public)
end
end
然后将其包含在您的模型中:
class Category < ActiveRecord::Base
include HasTransparency
....
end
【讨论】:
使用关注点或模块的“正确方式”的替代方法是,您可以引用另一个类枚举。它对我来说非常有效:
enum same_values_than_other: SomeOtherClass.my_awesome_enum
【讨论】:
SomeOtherClass中的字段名应该使用复数形式