【发布时间】:2019-03-01 01:23:17
【问题描述】:
我从 Ruby on Rails 开始,我有这两个模型:
城市和街道,
这两个模型是独立生成的,它们之间没有任何关系。现在我需要一个城市有很多街道,每条街道都属于一个城市。我运行了这个命令:
bin/rails generate migration AddCityRefToStreets city:references
产生了这个迁移:
class AddCityRefToStreets < ActiveRecord::Migration[5.2]
def change
add_reference :streets, :city, foreign_key: true
end
end
然后我跑bin/rails db:migrate 然后我进入这些模型类并写道:
class City < ApplicationRecord
has_many :streets, dependant: :destroy
end
和
class Street < ApplicationRecord
belongs_to :city
end
Rails 没有显示任何抱怨,到目前为止它对我来说工作正常。如果我问@city.streets.length,它将为@city 返回正确数量的街道。如果我问@street.city,它也会返回正确的城市。
问题是,我使用 DBeaver 进入数据库,迁移并没有在 cities 和 streets 表之间生成关系。 streets 表向我显示了一个 city_id 字段,但在 ER 图表视图中仍未显示任何关系。
我的问题是:我在这里缺少什么?这是关联两个独立创建的实体的正确方法吗?
我正在使用 Linux Mint 18.3、Rails 5.2.1、Sqlite 3.11.0 和 DBeaver 5.1。
【问题讨论】:
标签: ruby-on-rails ruby database-migration