Родительская модель, у которой в Rails может быть только один дочерний элемент? - PullRequest
1 голос
/ 21 сентября 2011

Извините, название довольно неясно - я просто не уверен, как сформулировать вопрос, не объясняя его.

Я бы хотел записать тренировки с моим приложением.Я бы хотел таблицу тренировок (то, что я называю родителем), которая содержит базовую информацию, такую ​​как дата и sub_workout_type_id

Запись тренировки может иметь либо тренировку сердечно-сосудистой системы (одна модель), либо тренировку силы (другая модель).

Моя мысль о том, чтобы иметь 3 таблицы вместо 2-х моделей Cario Workout и модели силовых тренировок, состоит в том, что я смогу получить информацию о тренировке любого типа, потянув Record Records и затем копая глубже.по мере необходимости.

Возможно, существует более рубиновый способ сделать это?Потому что сейчас я не знаю, как сказать has_one_model_or_the_other.Спасибо!

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Я вижу два варианта: либо вы используете STI (наследование одной таблицы): в этом случае у вас будет одна таблица, которая будет содержать как сердечно-сосудистую модель или силовую тренировку, так и тип.Это будет работать только в том случае, если две модели имеют общие характеристики.

Другое решение - написать что-то вроде

has_one :cardiovascular
has_one :strength

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

Надеюсь, это поможет.

0 голосов
/ 21 сентября 2011

Как уже упоминалось @nathanvda, STI может быть хорошим выбором.

Если вы хотите хранить данные, относящиеся к классу, с вашими моделями, возможно, посмотрите Моделирование наследования с помощью Ruby / Rails ORM , чтобы увидеть, дает ли этот ответ какие-либо идеи о том, как смоделировать эти отношения.

Обратите внимание, что в примере используются has_many, но многие идеи похожи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...