Я начинаю с 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 Diagram.
Мой вопрос: что мне здесь не хватает?Это правильный способ связать две сущности, созданные независимо?
Я использую Linux Mint 18.3, Rails 5.2.1, Sqlite 3.11.0 и DBeaver 5.1.