Я создаю приложение журнала, которое будет работать для нескольких видов спорта (например, подводное плавание и дайвинг), и я пытаюсь найти способ имеют дочерние модели, наследующие не только родительские методы, но и родительские (базы данных) столбцы.Rails: модели, которые наследуют столбцы от родителя, и у каждого есть дополнительные столбцы
Изображение может лучше объяснить: Logbook database sample
Таким образом, любые модели под категории ScubaDiving, фридайвинга и прыжки с парашютом модели, которые я буду называть из взглядов.
Модели под Родительским или Дайвинг, однако, никогда не будут вызваны и предназначены только для заполнения своих детей столбцами базы данных (и, возможно, методами).
Каков наилучший способ создания моделей + ассоциации + наследование?
Из исследования я сделал, я читал:
- Single Table Inheritance:
- будет передавать только родительские методы, а не столбцы базы данных
- полиморфные ассоциации :
- Я сравнил свою ситуацию с примером, который я нашел (комментарии на фото s, articles, posts), но мой Divespot и Airport (эквивалент: Фото, статья) не могут иметь many Spots (eq: Comments).
- Multiple Таблица Наследование:
- Не удалось заставить его работать, но это, казалось, ближе всего к тому, что я искал?
- Простые модели:
- Я всегда мог создать модель для каждого ребенка (без родителей) и повторите код. Я все еще хотел посмотреть, есть ли способ рефактовать.
Я использую Rails 5 и базы данных PostgreSQL.
Руководство было слишком сложно для меня, но я закончил тем, что сделал что-то подобное. Я создал полиморфную модель, к которой подключались аналогичные классы, позволяя им иметь доступ к общим столбцам. –