枚举默认值以跳过现有记录 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 的支持=]
请检查您是否使用受支持的版本
我在 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 的支持=]
请检查您是否使用受支持的版本