0

我有 2 个非常简单的模型:

class Teacher < ActiveRecord::Base
  has_one :fee, :foreign_key => 'teacher_id'
end

...

class Fee < ActiveRecord::Base
  belongs_to :teacher
end

使用“查找”方法加载教师信息时,仅存在教师表信息。(数据存在于费用表中)

@teacher = Teacher.find(id)

使用调试方法:

--- !ruby/object:Teacher
attributes:
  id: 7
   …
  presentation: 
  presentation_flag: true
  created_at: 2013-09-16 00:38:14.000000000 Z
  updated_at: 2013-09-16 00:38:14.000000000 Z
  status: 
  last_login: 
  first_name: 
…

但没有关于费用表。有任何想法吗 ?谢谢

4

1 回答 1

1

这是设计使然。ActiveRecord默认情况下是“惰性”的,它仅在您第一次fee访问时获取数据。@teacher.fee

如果你想同时加载两者,你应该使用'eager loading',添加includes如下:

@teacher = Teacher.includes(:fee).find(id)

以下是“急切加载”的一些参考资料:

http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations http://railscasts.com/episodes/22-eager-loading-revised

于 2013-09-16T02:24:17.627 回答