在两个表之间添加JOIN

这是我的课程:

Model Organization has_many Students Model Student has_many Classes belongs_to Organization Model Class a field named : price belongs_to Student scope :top_expensive_classes, joins(:students).order('price DESC') 

现在我想列出十大昂贵的课程

至少我params的第一个问题是在params我有基于的params进行过滤但是我编写了这样的控制器,它不起作用,因为它认为它应该在Class模型中找到organization_id但它在Student模型中。

 @results = Class.top_expensive_classes.where(organization_id: params[:id]).limit(RESULT_SET_COUNT) 

所以我想知道是否有办法解决这个问题? 我想我应该在某处介绍一个新的加入? 但无法弄清楚。

您的范围中有一个拼写错误: joins:(:programs)应该是joins(:programs)

要根据学生中的组织ID进行提取,您可以执行以下操作:

 @results = Class.top_expensive_classes .joins(student: :organization) .where(organization: {id: params[:id]})