我想获取由特定用户评论的所有帖子,其中包含创建者,编辑者,评论和论坛的热切加载。
Post.rb
named_scope :list_of_post {|user_id|
{
:include => [:creator,:editor,:comments,:forum],
:conditions => ["comments.user_id = ?",user_id]
}
}
但是这个命名范围会为创建者,编辑者,评论和论坛创建一个大查询而不是小的IN查询。
这是因为使用:include和:条件一起发生。
任何返回IN查询的解决方案,而不是一个大查询。
答案 0 :(得分:0)
我假设您正在使用rails 2 你可以这样做而不是范围:
Post.find(:conditions => {:id => user.comments.map(:post_id)}, :include => [...])
当您迁移到rails 3时,请查看squeel和ransack。它可以帮助您更轻松地完成请求。
答案 1 :(得分:0)
当你在那里投掷:joins => :comments
时会发生什么?它必须加入才能进行搜索,但是显式设置连接会将其他表拉出查询吗?