Полиморфные рельсовые ассоциации (в обратном направлении?)
-
22-07-2019 - |
Вопрос
У меня есть ассоциация полиморфных рельсов много в одном в моем приложении рельсов для модели 'case'. Есть много вещей, у которых есть дела, поэтому я обращаюсь к делу, которое есть у каждой вещи, путем 'thing_that_has_a_case.case'. Р>
Однако я пытаюсь пойти другим путем, и я не знаю, как. У меня есть доступ к объекту case, но я хочу получить доступ к объекту, который обрабатывается. У рельсов есть способ сделать это? Я мог бы сделать это с помощью уродливого переключателя, который по-разному находит sql для каждого типа объекта, но я надеялся, что у rails будет лучший способ. Спасибо!
Решение
Вы можете добавить что-то подобное в модель вашего дела:
belongs_to :parent, :polymorphic => true
.. в котором предполагается, что у вас есть поля parent_id
и parent_type
в вашей модели дела (измените первый аргумент на Proper_to
в зависимости от того, как вы назвали эти поля ассоциации). Получив это, вы сможете просто обратиться к case.parent
для данного экземпляра дела.
И, чтобы уточнить, у одной стороны этих отношений есть что-то вроде:
has_many :cases, :as => :parent, :dependent => :destroy
(я предполагаю, что у вас уже есть эта работа на основе вашего описания)