枚举默认值以跳过现有记录 rails

Enum default value to skip existing records rails

我在 DB 上有大量记录,想添加一个新列。但是,我不想将默认值设置为旧的现有记录,只想设置新的。

当我在迁移时设置默认值(如下所示)时,所有旧的现有的都将接收默认值。

add_column :records, :status, :integer, default: 0

问题是,如果我只将默认值添加到枚举中,就像这样:

enum status: {
    to_review: 0,
    pending: 1,
    processed: 2
  }, _default: :to_review

我收到这个错误

NoMethodError (undefined method `all?' for :to_review:Symbol)

如何添加新列、设置默认值并仍将旧记录保留为 null

查看此处的文档,您似乎走对了路

https://api.rubyonrails.org/v6.1.4/classes/ActiveRecord/Enum.html

enum status: { to_review: 0, pending: 1, processed: 2}, _default: :to_review

注意: rails 6.1 - pull request[=13 中添加了对_default 的支持=]

请检查您是否使用受支持的版本