迁移应该是什么样的?我想利用 jsonb 数组查询技术。
最佳答案
我会这样写迁移:
def change
reversible do |dir|
dir.up { change_column :models, :attribute, 'jsonb USING CAST(attribute AS jsonb)' }
dir.down { change_column :models, :attribute, 'json USING CAST(attribute AS json)' }
end
end
我不知道这在性能方面与其他解决方案相比如何,但我在一个包含 120,000 条记录的表上对此进行了测试,每条记录有四个 json
列,我花了大约一分钟时间迁移该表。当然,我猜这取决于 json
结构的复杂程度。
另外,请注意,如果您现有的记录具有默认值 {}
,您必须添加到上述语句中 default:{}
,否则您将有 jsonb
列,但默认值将保持为 '{}'::json
。
关于ruby-on-rails - 如何将 ActiveRecord 模型属性从 json 迁移到 jsonb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50024841/