Ruby on rails 回填postgres、rails中的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

我在现有表中添加了一个新的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_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。