在 Rails 中使用 add_reference 时,架构图中显示的表之间没有关系



我正在开发一个 Rails 应用程序,我需要为 Rails 迁移中的现有列添加一些外键,并且很少有人也在处理相同的列。 我以这种方式添加:

class AddUserRefToEvents < ActiveRecord::Migration[5.2]
  def change
    add_foreign_key :events, :users, name: :index_events_on_user_id
  end
end

我的一个伙伴是这样添加的:

class AddUserToParts < ActiveRecord::Migration[5.0]
  def up
    add_reference :parts, :user
  end
  def down
    remove_reference :parts, :user
  end
end

当我们使用 SchemaCrawler 构建模式图时,关系在用户和事件之间是内置的(带有 add_foreign_key ),但用户和部分之间没有关系(当added add_reference时)。

你能告诉我为什么吗?我们可以同时使用两者(参考此链接)还是仅使用add_foreign_key?请帮忙。

事实是add_reference默认情况下添加外键。v5.2 或 v5.0 的 API 文档声明,选项哈希可以包含:foreign_key键来设置适当的外键约束。

因此,要使用add_reference只需更改代码以包含foreign_key: true选项即可。

add_reference :parts, :user, foreign_key: true

最新更新