ed1*_*d1t 2 ruby ruby-on-rails ruby-on-rails-3
我有一个模型用户,其中has_many:messages和message属于:user.
当我执行Message.find(1,:include =>:user)时,它不会返回给我用户,但如果我执行Message.find(1).to_json(:include =>:user),它确实包含了用户对象哈希.
我怎样才能将它包含在Message.find(1,:include =>:user)中?
这是一个急切/懒惰加载的情况.当你这样做时:
Message.find(1, :include => :user)
Run Code Online (Sandbox Code Playgroud)
您正急切地加载用户,因为您打电话时@message.user
,您没有进行另一个查询来获取用户,而执行:
Message.find(1)
Run Code Online (Sandbox Code Playgroud)
将找到该消息,并调用@message.user
将进行另一个SQL查询(也称为延迟加载).
如果您查看发送到服务器的实际SQL查询,您将看到您在第一个示例中提取用户.
它没有显示的原因是因为当你检查@message
它时只显示消息,而不是调用to_json
,这会强制检查user
.
归档时间: |
|
查看次数: |
5778 次 |
最近记录: |