Полиморфные рельсовые ассоциации (в обратном направлении?) - PullRequest
0 голосов
/ 06 августа 2009

У меня есть ассоциация много-к-одному полиморфных рельсов в моем приложении rails для модели 'case'. Есть много вещей, у которых есть дела, поэтому я обращаюсь к делу, которое есть у каждой вещи, путем 'thing_that_has_a_case.case'.

Однако я пытаюсь пойти другим путем, и я не знаю, как. У меня есть доступ к объекту case, но я хочу получить доступ к объекту, который обрабатывается. У рельсов есть способ сделать это? Я мог бы сделать это с помощью уродливого переключателя, который по-разному находит sql для каждого типа объекта, но я надеялся, что у rails будет лучший способ. Спасибо!

1 Ответ

1 голос
/ 06 августа 2009

Вы можете добавить что-то подобное к вашей модели кейса:

belongs_to :parent, :polymorphic => true

.. что предполагает наличие в вашей модели дела полей parent_id и parent_type (измените первый аргумент на belongs_to в зависимости от того, как вы назвали эти поля ассоциации). Если у вас есть это, вы можете просто ссылаться на case.parent для данного экземпляра дела.

И, чтобы уточнить, у одной стороны этих отношений есть что-то вроде:

has_many :cases, :as => :parent, :dependent => :destroy

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

...