Я использую Ruby 2.6.3
У меня есть четыре таблицы:
Таблица № 1: транзакция (идентификатор, заголовок)
Таблица № 2: Поездка (идентификатор, имя)
Таблица № 3: TripBreakdown (идентификатор, имя)
Таблица № 4: TripTransaction (идентификатор, транзакция-идентификатор, trip_id, trip_breakdown_id)
Каждая транзакция может принадлежат к одной поездке и одной поездке. Одна поездка имеет много транзакций, а одна TripBreakdown имеет много транзакций, поэтому каждая транзакция относится к нулю или более Trip и TripBreakdown.
Для этого я создал Таблицу # 4 для хранения транзакции_id, trip_id и trip_breakdown_id
Я хочу создать таблицу TripTransaction так, чтобы (транзакция_id, trip_id, trip_breakdown_id) были всеми внешними ключами.
Вот как выглядят классы моделей:
class Transaction < ApplicationRecord
belongs_to :trip_transaction, optional: true
end
class Trip < ApplicationRecord
has_many :trip_transactions, class_name: "TripTransaction", foreign_key: "trip_transaction_id"
end
class TripBreakdown < ApplicationRecord
has_many :trip_transactions, class_name: "TripTransaction", foreign_key: "trip_transaction_id"
end
class TripTransaction < ApplicationRecord
belongs_to :transactions, class_name: "Transaction", foreign_key: "transaction_id"
belongs_to :trips, class_name: "Trip", foreign_key: "trip_id"
belongs_to :trip_breakdowns, class_name: "TripBreakdown", foreign_key: "trip_breakdown_id"
end
Вопросы: 1) Я не уверен, правильны ли мои классы моделей?
2) Как мне создать новый объект TripTransaction, связать его с тремя внешними ключами и вставить в базу данных?
Если у меня есть один внешний ключ, в документации говорится, что я могу сделать что-то вроде @book = @author.books.create(published_at: Time.now)
, но как я могу это сделать в моем случае? Спасибо