我渴望加载与其关联的模型对象:Rails的预先加载和where子句
user= User.includes(:posts).find(1)
但随后在代码中的某些点我愿做这样的事情:
user.posts.where(:topic => "x")
但是,只是再次运行查询。所以相反,我想我会这样做:
user.posts.select{|post| post.topic == "x" }
这不会重新运行查询。但我有几个问题。
首先,这是正确的做法吗?
其次,我对这种情况下select做了些什么感到困惑。因为当我运行最后一行时,即使我没有使用includes函数,它第一次运行查询,然后如果我再次运行它,它不......所以有某种缓存涉及? 因为当我使用where子句它每次运行查询。
谢谢。
这是完美的,谢谢! – user1069624 2013-03-20 14:34:33