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 を見つける必要があると考えているが、モデルorganization_id内にあるため、このようにコントローラーを記述します。ClassStudent

@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 に答える