轨道:使用has_one递归获取信息



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

class Teacher < ActiveRecord::Base
  has_one :fee, :foreign_key => 'teacher_id'
end
...
class Fee < ActiveRecord::Base
  belongs_to :teacher
end

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

@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: 
…

但没有什么关于费用表的。有什么想法吗?谢谢

这是设计使然。 ActiveRecord默认为"懒惰",但它仅在您首次访问@teacher.fee时获取fee数据。

如果你想同时加载两者,你应该通过添加这样的includes来使用"预先加载":

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

以下是"预先加载"的几个参考:

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

相关内容

  • 没有找到相关文章

最新更新