【问题标题】:adding relation through migrations in Rails 5通过 Rails 5 中的迁移添加关系
【发布时间】:2017-09-20 23:45:04
【问题描述】:

我听从了这个 SO post 的建议。主菜属于场地。所以我希望在主菜表上有一个名为venue_id 的外键。我生成了以下内容:

rails g migration AddEntreeToVenue entree:belongs_to 

它创建了以下迁移:

class AddEntreeToVenue < ActiveRecord::Migration[5.0]
  def change
    add_reference :venues, :entree, foreign_key: true
  end
end

但是在运行 db:migrate 之后,我查看了 entrees 表并且没有外键:

Indexes:
    "entrees_pkey" PRIMARY KEY, btree (id)
Referenced by:
    TABLE "venues" CONSTRAINT "fk_rails_0cf11999c6" FOREIGN KEY (entree_id) REFERENCES entrees(id)

它似乎是将外键添加到场地表,而不是主菜表。我做错了什么?

【问题讨论】:

  • 您应该已经添加了对主菜表的引用。做:add_reference :entrees, :venue, index: true

标签: ruby-on-rails


【解决方案1】:

您的生成器命令指定 Rails 应该在 Venues 上创建一个 belongs_to 列。你真正想要的是相反的:

rails g migration AddVenueToEntrees venue:belongs_to

这将创建一个修改entrees 的迁移,在venues.id 上添加一个带有外键约束的venue_id 列。

【讨论】:

    猜你喜欢
    • 2017-02-17
    • 2014-09-30
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多