Ruby on rails 回填postgres、rails中的uuid列
我在现有表中添加了一个新的uuid列。按照gem的建议,我想单独回填列值 我编写了以下迁移来添加uuid列,效果很好:Ruby on rails 回填postgres、rails中的uuid列,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我在现有表中添加了一个新的uuid列。按照gem的建议,我想单独回填列值 我编写了以下迁移来添加uuid列,效果很好: def change enable_extension 'pgcrypto' unless extension_enabled?('pgcrypto') add_column :table_name, :column_name, :uuid change_column_default :table_name, :column_name, 'gen_r
def change
enable_extension 'pgcrypto' unless extension_enabled?('pgcrypto')
add_column :table_name, :column_name, :uuid
change_column_default :table_name, :column_name, 'gen_random_uuid()'
end
我进行了以下迁移以回填数据,但它没有像预期的那样起作用:
def up
Model.unscoped.in_batches do |relation|
relation.update_all column_name: 'gen_random_uuid()'
sleep(0.01) # throttle
end
end
使用原始sql查询可以解决以下问题:
def up
Model.unscoped.in_batches do |relation|
relation.update_all "column_name = gen_random_uuid()"
sleep(0.01) # throttle
end
end
你说的“不起作用”是什么意思?是否看到错误?否,rails发出的sql语句将列值设置为null。但我想添加要分配的随机uuid。