Rails包括eager loading =>嵌套模型不在to_json版本中?

时间:2013-05-18 01:41:38

标签: ruby-on-rails ruby

我有一个TwitterUser类,有许多TwitterLists

class TwitterUser < ActiveRecord::Base    
    has_many :twitter_lists, :dependent => :destroy
end

当我这样做时:

user = TwitterUser.includes(:twitter_lists).find(12615489)

然后:

lists = user.twitter_lists

它急切地在第一个“查找”中加载该用户的推特列表,因此当我执行user.twitter_lists(这是预期的)时,它不会运行查询。

但是当我尝试将用户转换为JSON时: user.to_json

我没有在JSON中的任何地方看到嵌套关联“twitter_lists”。即使我使用了急切的装载。为什么是这样?我怎样才能让它出现在JSON中?

2 个答案:

答案 0 :(得分:1)

要将关联包含在to_json的输出中,您需要将:include => :twitter_lists传递给to_json

急切加载的关联与to_json输出中包含的关联之间没有联系 - 两者完全无关。

答案 1 :(得分:0)

检查这个答案 可能这就是你需要的

Rails find method - select columns from ":include" table parameter

包含仅用于急切加载。这意味着它在某处缓存但实际上没有返回