如何在 Rails 迁移中更新现有参考的选项

How to update options on an existing reference in Rails migration

如何编写迁移文件以向现有模型关系添加选项?必须保留现有 table 数据。

例如,我有现有的:

class Chapter < ApplicationRecord
  belongs_to :org
end

我想更新到:

class Chapter < ApplicationRecord
  belongs_to :org, touch: true
end

如何为此编写迁移文件? (或任何其他参考选项更改?)

add_reference 会更新现有的列吗?还是添加一个新的?

class AddChapterToOrg < ActiveRecord::Migration
  def change
    add_reference :org, :chapter, touch: true
  end
end

touch: truebelongs_to 方法的一个选项,它告诉 Rails 在更新当前对象的时间戳时更新关联对象的时间戳。此触摸由 Rails 而不是数据库引擎处理。

也就是说,当您将 touch: true 添加到 belongs_to 关联时,就不需要 运行 数据库迁移,因为数据库架构不需要更改以支持这个。