left_joins дважды в одну и ту же таблицу - PullRequest
0 голосов
/ 07 января 2019

Можно ли присоединиться к одному столу дважды?

В нашем случае мы хотим:

  polymorphic.left_joins(:course, step: :course)

Проблема, когда полиморфная строка имеет тип «Шаг», в этом случае связанный ход шага не включается

Зачем вам нужно присоединиться к ней дважды?

Например, у нас есть полиморфная модель, которая принадлежит либо модели курса, либо модели шага. Шаг принадлежит - конечно. Мы должны присоединиться course или step with course. Это означает, что если в полиморфной строке есть тип Course, мы присоединяемся к Course.fields, если для типа Step нам необходимо объединить steps with course, чтобы мы могли иметь в одной строке polymorphic.fields + steps.fields + связанный файл course.fields

1 Ответ

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

& # x2699; Мы можем присоединиться к одной и той же таблице дважды вручную, используя псевдоним для таблицы ( t1 ) & # X26C4;

sql = <<-SQL
  LEFT JOIN courses
    ON courses.id = polymorphicable_id
    AND (polymorphicable_type = 'Course')
  LEFT JOIN steps
    ON steps.id = polymorphicable_id
    AND (polymorphicable_type = 'Step')
  LEFT JOIN courses AS t1
    ON t1.id = steps.course_id
SQL

polymorphic.joins(sql)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...