То, что вы ищете, это полиморфные ассоциации Иногда поездки связаны с автобусом, иногда с поездом, самолетами и лодками.
Несколько более сложный поворот ассоциаций - это полиморфная ассоциация.При полиморфных ассоциациях модель может принадлежать нескольким другим моделям в одной ассоциации.Например, у вас может быть модель поездки, которая относится либо к модели поезда, либо к модели автобуса.Вот как это можно было бы объявить:
class Trip < ApplicationRecord
belongs_to : transportable, polymorphic: true
end
class Bus < ApplicationRecord
has_many :trips, as: :transportable
end
class Train < ApplicationRecord
has_many :trips, as: :transportable
end
в базе данных
class CreateTrips < ActiveRecord::Migration[5.0]
def change
create_table :trips do |t|
...
t.references :transportable, polymorphic: true, index: true
....
end
end
end
, если таблица полностью готова
class CreateTrips < ActiveRecord::Migration[5.0]
def change
add_reference :trips, :transportable, polymorphic: true, index: true
end
emd
Я надеюсь, что этопомогает