Полиморфные рельсовые ассоциации (в обратном направлении?)

StackOverflow https://stackoverflow.com/questions/1235790

Вопрос

У меня есть ассоциация полиморфных рельсов много в одном в моем приложении рельсов для модели '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

(я предполагаю, что у вас уже есть эта работа на основе вашего описания)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top