在Active Record中表示参考数据的最佳方式

时间:2016-09-08 12:50:21

标签: ruby-on-rails activerecord data-modeling

假设我有一个可以拥有任何数量属性的产品......这些属性仅限于特定选项。产品可以有(每个下面都有有效选项):

  • 颜色
    • 红色
    • 绿色
  • 类别
    • 运动
    • 正式
    • 儿童
  • 防水
    • 没有

列表可以继续。无论如何用单个表来表示活动记录吗?我认为有一个类似于:

的单一参考数据表是理想的
create_table :attritubes do |t|
  t.string :name # Red, Blue, Green, Sports, Formal...
  t.string :field_type # Color, Category, Waterproof...
end

为每个属性建立一个模型似乎是浪费,因为它并没有真正做多少。这是一个我有一个名为属性的通用模型的情况,产品有很多?或者有一种方法可以让活动记录通过列来区分属性(构成这种语法):

belongs_to :color, class_name: :attribute, where(field_type: 'color')

输入后,它几乎看起来像一个范围......这是一个更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以为

等属性创建单个表格
create_table :attritubes do |t|
  t.string :color 
  t.string :category 
  t.boolean :waterproof
end

&安培;然后获取像

这样的枚举数据
enum color: { red:0, blue:1, green:2 }
enum category: { sports:0, formals:1, kids:2 }
enum waterproof: { no:0, yes:1 }