我有帖子和评论模型 发布has_many:commetns 评论belongs_to:post 我想检索来自某个用户的评论的所有*帖子。 (所以我想得到每一篇文章(甚至是那些没有评论的帖子),并过滤掉某些用户创建的评论)
现在我尝试过这样的事情:
Post.all.includes(:comments).where('comments.post_id IS NULL OR comments.user_id = ?' id).references(:comments)
它将帖子评论过滤掉我想要的帖子,但是如果Post没有其他评论而不是过滤掉的评论它不会返回此帖子(显然它会被where子句拒绝...)
或
Post.all.joins('LEFT JOIN comments c ON c.post_id = posts.id AND c.user_id = ' + sanitize(id))
它返回所有帖子,但过滤不起作用......
答案 0 :(得分:2)
不幸的是,这个问题没有优雅的解决方案。可以预加载与静态过滤器的关联,例如:
User.eager_load(:popular_comments)
但它不适用于动态文件管理器。
您可以在此处找到有关预加载Rails关联的优秀文章http://blog.arkency.com/2013/12/rails4-preloading/