Вопрос

Я работаю над приложением для скачек и пытаюсь использовать STI для моделирования связей лошади.Связи лошади состоят из ее владельца, тренера и жокея.Со временем соединения могут меняться по целому ряду причин:

  1. Лошадь продана другому владельцу
  2. Владелец меняет тренеров или жокея
  3. На лошадь претендует новый владелец

В нынешнем виде я смоделировал это с помощью следующих таблиц:

  1. лошади
  2. соединения (таблица соединений)
  3. заинтересованные стороны (заинтересованные стороны имеют три подкласса:жокей, тренер и владелец)

Вот мои классы и ассоциации:

    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 .Это упростило бы задачу и повысило бы производительность.Я не вижу никакой функциональности, которую добавляет модель подключения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top