以下是我的课程:
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
我有organization_id
根据它进行过滤但是我写这样的控制器不能正常工作,因为它认为它应该找到organization_id在Class
模型中,但它位于Student
模型中。
@results = Class.top_expensive_classes.where(organization_id: params[:id]).limit(RESULT_SET_COUNT)
所以我想知道是否有办法解决这个问题?我想我应该在某处介绍一个新的加入?但无法理解。
答案 0 :(得分:1)
您的范围内存在拼写错误:joins:(:programs)
应为joins(:programs)
要根据学生中的组织ID进行提取,您可以执行以下操作:
@results = Class.top_expensive_classes
.joins(student: :organization)
.where(organization: {id: params[:id]})