Ruby on rails 添加关联表的联接

Ruby on rails 添加关联表的联接,ruby-on-rails,ruby-on-rails-3.2,rails-activerecord,Ruby On Rails,Ruby On Rails 3.2,Rails Activerecord,我的组织类如下所示: has_many Students has_many Klasses belongs_to Organization some field named : price scope :top_expensive_classes, joins(:students).order('price DESC') belongs_to Student @results = Klass.top_expensive_classes.where(organization_id: para

我的组织类如下所示:

has_many Students
has_many Klasses
belongs_to Organization
some field named : price
scope :top_expensive_classes, joins(:students).order('price DESC')
belongs_to Student
@results = Klass.top_expensive_classes.where(organization_id: params[:id]).limit(RESULT_SET_COUNT)
我的学生课是这样的:

has_many Students
has_many Klasses
belongs_to Organization
some field named : price
scope :top_expensive_classes, joins(:students).order('price DESC')
belongs_to Student
@results = Klass.top_expensive_classes.where(organization_id: params[:id]).limit(RESULT_SET_COUNT)
我的Klass课程是这样的:

has_many Students
has_many Klasses
belongs_to Organization
some field named : price
scope :top_expensive_classes, joins(:students).order('price DESC')
belongs_to Student
@results = Klass.top_expensive_classes.where(organization_id: params[:id]).limit(RESULT_SET_COUNT)
我的查询如下所示:

has_many Students
has_many Klasses
belongs_to Organization
some field named : price
scope :top_expensive_classes, joins(:students).order('price DESC')
belongs_to Student
@results = Klass.top_expensive_classes.where(organization_id: params[:id]).limit(RESULT_SET_COUNT)

请注意,它是从Klass开始的,这就是问题所在,因为我正在where类中搜索organization_id,但它不在Klass中,它在Student类中,所以我应该在某个地方引入一个联接来解决这个问题,但无法解决它

我认为真正的问题是你的联想可能不正确

一个学生有很多课 一个班有许多学生 但你拥有的是

一个学生有很多课 一个班级属于一个学生 这真的没有意义,至少在我见过的任何情况下,班级和学生互动。你应该在Klass和学生之间建立多对多的关系,而不是一对多的关系

阅读ActiveRecord查询

下面是使用上述精确模型定义的证明,即关联的顺序并不重要


我还需要保持我在该范围内的加入吗?目前它说找不到学生表。我们有语法错误吗?也许有些东西应该是学生而不是学生?上面说没有找到名为“学生”的社团。看起来你们的社团不应该是这样的。我已经更新了我的答案,以帮助指导您。除非情况发生了变化,否则您的贯穿关系需要在加入关系之后定义。这里的回答不是这样的,那是错误的信息;顺序无关紧要。