Rails连接具有has_many关联的表

时间:2016-08-29 12:24:10

标签: mysql ruby-on-rails activerecord

我有一个带有简单has_many的Student和Record表:通过关联:

class Student < ActiveRecord::Base
  has_many :records
end

我需要获取MBA分校的所有学生详细信息。我需要将结果分配给变量@students,并且需要使用

访问学生的记录
@students.each do |student|
   students.records.each do |record|
      ///
   end
end

那就是我需要将has_many相关的类数据也访问到一个对象中。如何为此编写查询。我是铁路的新手。请帮助。谢谢提前

2 个答案:

答案 0 :(得分:1)

试试这个,

@student = Student.where("student.course = ?", "MBA").includes(:records)

然后在实例变量上执行每个操作。这将使您免于N + 1问题

答案 1 :(得分:0)

看起来你有一个has_many关系而不是has_many:through。你看过导轨指南了吗?他们在那里描述了如何从数据库中获取数据。 http://guides.rubyonrails.org/active_record_basics.html#read 以下是has_many关系的更详细参考:http://guides.rubyonrails.org/association_basics.html#has-many-association-reference

确保您在循环中访问学生而不是学生 s

@students.each do |student|
  student.records.each do |record|
    ///
  end
end

MBA分支来自哪里?那是另一张桌子吗?

你最终可能会得到像@students = Student.where(branch_id: 1)这样的东西。 ID 1只是虚构的,但我猜你在另一张桌子上有你的分支。