Добавить связанное включает в себя рельсы на основе другого типа источника - PullRequest
0 голосов
/ 07 января 2020

У меня есть таблица polymorphi c, которая содержит тип источника и идентификатор источника. Тип источника может быть животным или растением. Теперь и животные, и растения имеют разные ассоциации. Основываясь на типе источника, я хочу легко загрузить с включением связанных с ним данных.

questions.includes(
  source: [
    :constant_setting,
    :category,
    :user,
    comments: [:user],
    parent: [user: [:employees, :company]],
    children: [user: [:employees, :company]]
  ]
)

Это может быть ассоциация для источника: животное. Но когда одним из источников является завод, он выдает ассоциацию не найденную ошибку. Как включить тип источника для растений и животных

1 Ответ

0 голосов
/ 07 января 2020

Я не думаю, что вы сможете устанавливать ассоциации нагрузки для всех типов источников. Это связано с тем, что для каждой записи ActiveRecord будет пытаться получить все отношения included, которые, в зависимости от типа источника, могут существовать или не существовать для некоторых записей.

Вы можете либо , а не Быстрая загрузка, если это соответствует вашему варианту использования, или вы можете загрузить объекты отдельно. Примерно так:

questions_for_animals = Question.where(source_type: "Animal").includes(<all relations of animals you want to pre load>)

questions_for_plants = Question.where(source_type: "Plant").includes(<all relations of plants you want to pre load>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...