从User和Lesson模型中检索教师:一种有效的方法

时间:2014-12-27 23:39:47

标签: ruby-on-rails ruby ruby-on-rails-4

我有两个模型:用户和课程。

User has_many :lessons
Lesson belongs_to :user

我必须检索作为教师的用户(他们至少有一节课)。哪种方式有效? 现在我使用了在Sql中以“IN”进行转换的where条件,这么慢,或者n查询,其中n是课程数。谢谢:))

1 个答案:

答案 0 :(得分:2)

如果您想要教师,而教师是至少有一节课的用户,请执行以下操作:

User.joins(:lessons)

这将执行内部联接,从而排除没有任何课程的用户。

但是,由于用户可以有多个课程,因此返回的表可能会有多个用户。对此的一个解决方案可以是按用户ID进行分组。

User.joins(:lessons).group("users.id")

或致电distinct

User.joins(:lessons).distinct