>我有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