Ruby on rails 使用:通过外键关系包含嵌套表

Ruby on rails 使用:通过外键关系包含嵌套表,ruby-on-rails,Ruby On Rails,CertProgramItem有多个:cert\u时间表。 CertSchedule属于以下项:注册费项目,:外键=>'注册费项目id',:类别名称=>'item' 从CertProgramItem开始,我希望在一个查询中获得所有CertSchedule及其相关表(以避免n+1问题)。我的第一个问题是: cpi_arr = CertProgramItem.find(:all, :include => :cert_schedules, :order => :id) 但是,这没有获取属

CertProgramItem有多个:cert\u时间表。 CertSchedule属于以下项:注册费项目,:外键=>'注册费项目id',:类别名称=>'item'

从CertProgramItem开始,我希望在一个查询中获得所有CertSchedule及其相关表(以避免n+1问题)。我的第一个问题是:

cpi_arr = CertProgramItem.find(:all, :include => :cert_schedules, :order => :id)
但是,这没有获取属于CertSchedules集合的Item类的成员

我已修改查询:

cpi_arr = CertProgramItem.find(:all, :include => {:cert_schedules => :items}, :order => :id)

但我得到了类似ActiveRecord::ConfigurationError的错误:找不到名为“items”的关联;可能是您拼错了?“或ActiveRecord::ConfigurationError:找不到名为'reg\u fee\u items'的关联;可能是您拼错了?第二个


有没有办法在一个查询中获得这个嵌套的外键关联?

以下是有关CertSchedule关联的一些更详细的信息:

class CertSchedule < ActiveRecord::Base
  belongs_to :cert_program_item
  belongs_to :reg_fee_item, :foreign_key => 'reg_fee_item_id', :class_name => 'Item'
  belongs_to :start_term, :class_name => 'SchoolTerm', :foreign_key => 'start_term_id'
此查询现在已成功返回我期望的结果。经验教训:

  • 使用模型中的外键名,而不是实际的表名
  • 关联中的多个项目需要用方括号括起来[]
class CertSchedule < ActiveRecord::Base
  belongs_to :cert_program_item
  belongs_to :reg_fee_item, :foreign_key => 'reg_fee_item_id', :class_name => 'Item'
  belongs_to :start_term, :class_name => 'SchoolTerm', :foreign_key => 'start_term_id'
cpi_arr = CertProgramItem.find(:all, :include => [:cert_tier, {:cert_schedules => [:reg_fee_item,:start_term] }])