Ruby on rails 如何在现有模型上通过添加参考rails迁移填充ID

Ruby on rails 如何在现有模型上通过添加参考rails迁移填充ID,ruby-on-rails,rails-migrations,Ruby On Rails,Rails Migrations,我有4个现有的模型,分别是RegionA、RegionB、ProductA和ProductB class RegionA < ... has_many :product_as ... end class ProductA < ... belongs_to :region_a ... end class RegionB < ... has_many :product_bs ... end class ProductB < ...

我有4个现有的模型,分别是RegionA、RegionB、ProductA和ProductB

class RegionA < ...
   has_many :product_as
   ...
end

class ProductA < ...
   belongs_to :region_a
   ...
end

class RegionB < ...
   has_many :product_bs
   ...
end

class ProductB < ...
   belongs_to :region_b
   ...
end

但是ID不会填充到新列中。考虑到有数百万条记录,以一种不会强制迁移运行数小时的方式填充这些ID的最佳方式是什么?我可以从迁移中删除activejob,还是最好在部署后运行手动脚本?这里最好的方法是什么?

您希望Rails如何知道哪些产品B属于RegionA的哪个记录?如果可以通过编程定义此行为,则可以执行以下操作:

ProductB.all.map{| p | p.region_a=region_a}


其中区域a是您找到的已定义区域。这也可以放在您的迁移中。

我最后编写了一个脚本,在sidekiq中运行了相当于迁移的脚本,以便在运行迁移之前填充关联。然后,在部署之前,我有一个预先准备好的数据库,转换很简单。

这对数百万条记录来说会很快吗?我说的是五千六百多万的博士后,实际上更像是两亿。
rails g migration AddProductAToRegionBs producta:references