См. комментарии для обновлений.
Я изо всех сил пытался получить четкий и прямой ответ на этот вопрос, я надеюсь, что на этот раз я это получу!: D Мне определенно многое предстоит узнать с Rails, однако я понимаю проблему, с которой я столкнулся, и буду очень благодарен за дополнительную помощь.
- У меня есть модель под названием "Задача".
- У меня есть абстрактная модель под названием "Цель".
- Я хотел бы связать несколько экземпляров подклассов Target to Task.
- Я не использую однонаправленное наследование таблицы.
- Я хотел бы запросить полиморфное отношение для возврата смешанного набора результатов подклассов Target.
- Я хотел бы запросить отдельные экземпляры подклассов Target для получения задач, с которыми они связаны.
Итак, я считаю, что полиморфное отношение многих-многих отношений между Задачами и подклассами Целей упорядочено. Более подробно, я смогу сделать что-то подобное на консоли (и, конечно же, в другом месте):
task = Task.find(1)
task.targets
[...array of all the subclasses of Target here...]
Но! Предполагая, что существуют модели "Store", "Software", "Office", "Vehicle", которые являются подклассами "Target", было бы неплохо также пересечь отношения в другом направлении:
store = Store.find(1)
store.tasks
[...array of all the Tasks this Store is related to...]
software = Software.find(18)
software.tasks
[...array of all the Tasks this Software is related to...]
Таблицы базы данных, подразумеваемые полиморфными отношениями, как представляется, способны совершать этот обход, но я вижу некоторые повторяющиеся темы в попытке найти ответ, который мне поражает дух полиморфных отношений:
- Используя мой пример, люди, похоже, хотят определить Store, Software, Office, Vehicle in Task, которые мы сразу можем сказать, не являются полиморфными отношениями, так как возвращает только один тип модели.
- Как и в предыдущем пункте, люди все еще хотят определить Store, Software, Office и Vehicle in Task в одной форме или форме. Важным здесь является то, что отношения слепы к подклассу. Мои полиморфы первоначально будут взаимодействовать только с Целями, а не как их индивидуальные подклассы. Определение каждого подкласса в задаче снова начинает утихать с целью полиморфного отношения.
- Я вижу, что модель для таблицы соединений может быть в порядке, что кажется мне несколько правильным, за исключением того, что она добавляет некоторую сложность, которую я предполагал, что Rails захочет покончить с этим. Я прошу неопытность на этом.
Кажется, это небольшая дыра в функциональности рельсов или в знаниях коллективного сообщества. Так что надеюсь, что stackoverflow может указать мой поиск ответа!
Спасибо всем, кто помогает!