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

时间:2019-01-31 18:26:58

标签: ruby-on-rails foreign-keys rails-migrations schemacrawler

我正在开发一个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?请帮忙。

1 个答案:

答案 0 :(得分:3)

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

因此,要使用add_reference,只需更改代码即可将foreign_key: true包括在内。

add_reference :parts, :user, foreign_key: true