添加两个表之间的JOIN(Adding a JOIN between two tables)

2019-11-01 17:36发布

这里是我的类:

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 Class模型,但它是在Student模型。

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

所以我在想,如果有一种方法来解决这个问题? 我想我应该引入一个新加入的地方? 但不能弄明白。

Answer 1:

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

要根据学生中组织ID你可以做到这一点获取:

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


文章来源: Adding a JOIN between two tables