Помощь Девственнице в ИППП
-
21-09-2019 - |
Вопрос
Я работаю над приложением для скачек и пытаюсь использовать STI для моделирования связей лошади.Связи лошади состоят из ее владельца, тренера и жокея.Со временем соединения могут меняться по целому ряду причин:
- Лошадь продана другому владельцу
- Владелец меняет тренеров или жокея
- На лошадь претендует новый владелец
В нынешнем виде я смоделировал это с помощью следующих таблиц:
- лошади
- соединения (таблица соединений)
- заинтересованные стороны (заинтересованные стороны имеют три подкласса:жокей, тренер и владелец)
Вот мои классы и ассоциации:
class Horse < ActiveRecord::Base
has_one :connection
has_one :owner_stakeholder, :through => :connection
has_one :jockey_stakeholder, :through => :connection
has_one :trainer_stakeholder, :through => :connection
end
class Connection < ActiveRecord::Base
belongs_to :horse
belongs_to :owner_stakeholder
belongs_to :jockey_stakeholder
belongs_to :trainer_stakeholder
end
class Stakeholder < ActiveRecord::Base
has_many :connections
has_many :horses, :through => :connections
end
class Owner < Stakeholder
# Owner specific code goes here.
end
class Jockey < Stakeholder
# Jockey specific code goes here.
end
class Trainer < Stakeholder
# Trainer specific code goes here.
end
В конце базы данных я вставил столбец Type в таблицу connections.
Правильно ли я это смоделировал?Есть ли лучший / более элегантный подход?Заранее благодарю вас за отзыв.
Джим
Решение
Пожалуйста, проконсультируйтесь этот документ об использовании STI в проектах rails.Что касается соединений - полиморфная ассоциация - ваш лучший выбор.
Другие советы
Сначала я должен сказать, что я не знаю, что такое ИППП.Что означает эта аббревиатура?
Я не понимаю, зачем вам нужна connection-model .Насколько я понимаю ваш домен, вы могли бы просто отключить подключение, и вам не нужно было бы использовать :through .Это упростило бы задачу и повысило бы производительность.Я не вижу никакой функциональности, которую добавляет модель подключения.