【问题标题】:No relationship between tables shown in schema diagram when using add_reference in Rails在 Rails 中使用 add_reference 时,模式图中显示的表之间没有关系
【发布时间】:2019-01-31 18:26:58
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    事实上add_reference默认添加外键。 v5.2v5.0 的 API Docs 声明选项哈希可以包含 :foreign_key 键来设置适当的外键约束。

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

    add_reference :parts, :user, foreign_key: true
    

    【讨论】:

      猜你喜欢
      • 2018-04-19
      • 2020-07-27
      • 1970-01-01
      • 2016-01-05
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多