0

这是我的课程:

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')

现在我想列出前 10 名昂贵的课程

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

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

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

4

1 回答 1

1

您的范围内有一个错字:joins:(:programs)应该是joins(:programs)

要根据 Student 中的组织 ID 获取,您可以执行以下操作:

@results = Class.top_expensive_classes
  .joins(student: :organization)
  .where(organization: {id: params[:id]})
于 2013-03-06T20:30:06.887 回答