Virgin STI Помощь - PullRequest
       18

Virgin STI Помощь

0 голосов
/ 21 марта 2010

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

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

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

  1. horse
  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

Один конец базы данных, у меня естьвставил столбец Тип в таблицу соединений.

Правильно ли я смоделировал это?Есть ли лучший / более элегантный подход.Заранее спасибо за отзыв.

Джим

Ответы [ 2 ]

2 голосов
/ 21 марта 2010

Пожалуйста, обратитесь к этому документу по вопросам использования STI в проектах rails. Что касается связей - полиморфная ассоциация - ваш лучший выбор.

0 голосов
/ 21 марта 2010

Сначала я должен сказать, что я не знаю, что такое ИППП. Что означает аббревиатура?

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

...