是否可以将同一张表两次连接?
在我们的情况下,我们想要:
polymorphic.left_joins(:course, step: :course)
当多态行的类型为“ Step”时,在这种情况下,相关的step of step不能联接的问题
为什么需要加入两次?
例如,我们有一个属于“课程”模型或“阶梯”模型的多态模型。步骤归属课程。我们应该加入course
或step with course
。这意味着如果多态行的类型为Course
,我们将加入course.fields;如果类型为Step
,则需要加入steps with course
,以便我们可以在一行中包含polymorphic.fields + steps.fields +关联课程.fields
答案 0 :(得分:0)
⚙我们可以使用表的别名( t1 )手动将同一张表连接两次。 ⛄
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)