0

我正在开发一个 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 构建模式图时,关系是在用户和事件之间建立的(with add_foreign_key),但用户和部件之间没有关系(when added add_reference)。

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

4

1 回答 1

3

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

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

add_reference :parts, :user, foreign_key: true
于 2019-01-31T19:35:37.110 回答