在 Rails 中使用枚举字段进行单表继承有什么缺点?

问题描述 投票:0回答:1

我正在使用单表继承重构现有模型,因为模型逻辑有太多基于枚举列的路径。

我想一次拉出一种,其他的保持原样。

我使用现有的列而不是添加新的

type
列 示例代码

class Experiment < ApplicationRecord
  self.inheritance_column = :experiment_type 

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

class CampaignExperiment < Experiment
end


此代码现在有效,规格正在通过。 但是 Rails 文档建议使用

type
列,它是字符串。 如果我使用枚举,我应该注意什么?将来会因为它的枚举而适得其反吗?

ruby-on-rails ruby activerecord enums single-table-inheritance
1个回答
0
投票

当实验控制器尝试通过传递 experiment_type 属性来创建特定类型的实验时,在运行时使用枚举失败。

因为我想一次迁移一个

experiment_type
仍然保持在处理请求时通过控制器设置 experiment_type 的方式。

我必须添加一个新列

type
并使其与
experiment_type
保持同步,这样我就可以在不破坏任何其他内容的情况下将实验类型拉到它自己的子类中。

© www.soinside.com 2019 - 2024. All rights reserved.