我有两个模型:用户和课程。
User has_many :lessons
Lesson belongs_to :user
我必须检索作为教师的用户(他们至少有一节课)。哪种方式有效? 现在我使用了在Sql中以“IN”进行转换的where条件,这么慢,或者n查询,其中n是课程数。谢谢:))
答案 0 :(得分:2)
如果您想要教师,而教师是至少有一节课的用户,请执行以下操作:
User.joins(:lessons)
这将执行内部联接,从而排除没有任何课程的用户。
但是,由于用户可以有多个课程,因此返回的表可能会有多个用户。对此的一个解决方案可以是按用户ID进行分组。
User.joins(:lessons).group("users.id")
或致电distinct
User.joins(:lessons).distinct