在两个表之间添加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]})