ruby 在rails中使用enum字段进行单表继承的缺点是什么?

50pmv0ei  于 2023-04-20  发布在  Ruby
关注(0)|答案(1)|浏览(70)

我正在使用单表继承重构现有模型,因为模型逻辑有太多基于枚举列的路径。
我想一次取出一种类型,保持其他东西的原样。
我使用了现有的列,而不是添加新的type列示例代码

class Experiment < ApplicationRecord
  self.inheritance_column = :experiment_type 

  enum experiment_type: {
    CampaignExperiment: 0,
    UserExperiment: 1,
  }
end

class CampaignExperiment < Experiment
end

这段代码现在可以工作了,规范正在通过。但是rails文档建议使用type列,它是字符串。如果我使用enum,我应该注意什么?它会因为它的enum而在将来适得其反吗?

nbysray5

nbysray51#

当Experiment控制器尝试通过传递experiment_type属性创建特定类型的实验时,在运行时使用枚举失败。
因为我想一次迁移一个experiment_type,仍然保持在处理请求时通过控制器设置experiment_type的方式。
我必须添加一个新列type,并使其与experiment_type保持同步,这样我就可以将experiment类型提取到它自己的子类中,而不会破坏其他任何内容。

相关问题