我正在使用单表继承重构现有模型,因为模型逻辑有太多基于枚举列的路径。
我想一次拉出一种,其他的保持原样。
我使用现有的列而不是添加新的
type
列
示例代码
class Experiment < ApplicationRecord
self.inheritance_column = :experiment_type
enum experiment_type: {
CampaignExperiment: 0,
UserExperiment: 1,
}
end
class CampaignExperiment < Experiment
end
此代码现在有效,规格正在通过。 但是 Rails 文档建议使用
type
列,它是字符串。
如果我使用枚举,我应该注意什么?将来会因为它的枚举而适得其反吗?
当实验控制器尝试通过传递 experiment_type 属性来创建特定类型的实验时,在运行时使用枚举失败。
因为我想一次迁移一个
experiment_type
仍然保持在处理请求时通过控制器设置 experiment_type 的方式。
我必须添加一个新列
type
并使其与 experiment_type
保持同步,这样我就可以在不破坏任何其他内容的情况下将实验类型拉到它自己的子类中。