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

No relationship between tables shown in schema diagram when using add_reference in Rails

我正在开发一个 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)。

你能告诉我为什么吗?我们可以同时使用(参考这个link)还是只使用add_foreign_key?请帮忙。

事实是add_reference 默认不添加外键。 v5.2 or v5.0 的 API 文档声明选项散列可以包含一个 :foreign_key 键来设置适当的外键约束。

因此,要使用 add_reference,只需更改您的代码以包含 foreign_key: true 作为选项。

add_reference :parts, :user, foreign_key: true