Я работаю над приложением для скачек и пытаюсь использовать STI для моделирования связей лошади.Связи лошади состоят из его владельца, тренера и жокея.Со временем соединения могут меняться по разным причинам:
- Лошадь продана другому владельцу
- Владелец меняет дрессировщика или жокея
- Лошадь заявленановым владельцем
В его нынешнем виде у меня есть модель со следующими таблицами:
- horse
- соединения (таблица соединений)
- заинтересованные стороны (у заинтересованных сторон есть три подкласса: жокей, тренер и владелец)
Вот мои предложения и ассоциации:
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
Один конец базы данных, у меня естьвставил столбец Тип в таблицу соединений.
Правильно ли я смоделировал это?Есть ли лучший / более элегантный подход.Заранее спасибо за отзыв.
Джим