我正在使用单表继承重构现有模型,因为模型逻辑有太多基于枚举列的路径。
我想一次取出一种类型,保持其他东西的原样。
我使用了现有的列,而不是添加新的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而在将来适得其反吗?
1条答案
按热度按时间nbysray51#
当Experiment控制器尝试通过传递experiment_type属性创建特定类型的实验时,在运行时使用枚举失败。
因为我想一次迁移一个
experiment_type
,仍然保持在处理请求时通过控制器设置experiment_type的方式。我必须添加一个新列
type
,并使其与experiment_type
保持同步,这样我就可以将experiment类型提取到它自己的子类中,而不会破坏其他任何内容。