如何加倍深入加载两次

时间:2014-01-09 16:34:47

标签: ruby-on-rails eager-loading

在我的Post模型中,我尝试用每个评论的作者急切加载用户(帖子的所有者),收藏夹和评论:

 Post.all.includes(:user, :original => {:favorite, :comments => :author })

但它不起作用,我收到错误

syntax error, unexpected ',', expecting => ...(:user, :original => [{:favorite, :comments => :author}... ...

有人可以告诉我问题在哪里吗?

1 个答案:

答案 0 :(得分:1)

正如错误所示,这只是一个语法错误。您使用的{:favorite, :comments => :author}不是有效的哈希。

使用数组作为:original的值来执行您想要的操作:

Post.includes(:user, :original => [:favorite, :comments => :author]).all

你的困惑可能源于遗漏了哈希的一些花括号,并非在所有情况下都需要。用明确添加的花括号重写上面内容可能会更清楚:

Post.includes(:user, {:original => [:favorite, {:comments => :author}]}).all