【问题标题】:How to update options on an existing reference in Rails migration如何在 Rails 迁移中更新现有参考的选项
【发布时间】:2021-02-11 16:29:41
【问题描述】:

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

例如,我已有:

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 true 不需要任何数据库更改。没有迁移。您还有其他选择吗?像唯一性验证(尽管应该在 db 中具有唯一索引)或可选/必需(在 db 中应该有空检查)

标签: ruby ruby-on-rails-6


【解决方案1】:

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

也就是说,当您将 touch: true 添加到 belongs_to 关联时,无需运行数据库迁移,因为无需更改数据库架构即可支持此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2014-10-04
    • 2023-03-03
    相关资源
    最近更新 更多