Rails - проблемы наследования одной таблицы. Любые решения / альтернативы - PullRequest
2 голосов
/ 29 мая 2011

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

Lead <требование </p>

Project <требование </p>

Под этим я хочу сказать, чтоСвинец - это требование, а проект - это требование.Все было хорошо, пока у меня были только эти двое.Тогда у меня была другая похожая вещь (Тендер), поэтому я создал

Тендер <Требование </p>

Теперь проблема в том, что когда Тендер конвертируется в проект, я не могу определить, какие проекты былиТендеры и Лидеры.Так что я не могу сказать, например:

Из 100 заявок я получаю 20 проектов, а из 100 тендеров я получаю 5 проектов.

Пока что в качестве обходного пути я думаю, что могу использовать логическое поле, чтобы сказать, был ли это тендер.Но это побеждает цель наличия ИППП.Есть ли другой способ сделать это с помощью самой STI.Или логические значения [или какое-то поле категории / проекта_типа] единственный способ сделать это.

Могу ли я использовать для этого state_machine?

Я уже некоторое время пытаюсь сделать это правильно.Любая помощь будет великолепна.

1 Ответ

0 голосов
/ 30 мая 2011

Поскольку никто не ответил на этот вопрос, я документирую различные подходы, которые у меня есть / я пробую. Но с каждым разом я начинаю испытывать неприязнь к ИППП.

  1. Используйте логические значения, чтобы указать, является ли требование тендером / лидерством / проектом. Добавлена ​​возможность иметь возможность пометить более одного. Требование может начинаться с тендера, затем стать лидером, а затем проектом.

  2. Поле состояния: HABTM. Можно проверить один или несколько статусов. Снова похоже на 1, но добавлено преимущество возможности добавлять статусы.

  3. Имеет один, но этот кажется не сухим. Не пробовал Добавление в качестве теоретического варианта. Проект имеет одно руководство или проект имеет один тендер.

  4. State-Machine: Похоже, интересный вариант. Не уверен, как я смогу отслеживать изменения состояния. Может ли кто-нибудь с опытом работы с State-Machine помочь мне здесь?

...