我有以下代码:
Post.where("user_id IN [1, 2, 3, 4, 5, 6]").includes(:authors, :comments).paginate(page: params[:page], per_page: 30)
我想要的是使用8 comments
每个帖子急切加载will_paginate
,这可能吗?怎么样?
答案 0 :(得分:0)
未经过测试的答案
我不认为那可能,但是:
Comment.joins(:posts).includes(:posts).where(posts: { user_id: [1,2,3,4,5,6] })
我不确定joins
和includes
是否可以一起调用。
这会给你一个关于你可以继续处理的评论的关系,你会有热切的帖子:
@comments = Comment.joins(:post).includes(:post).where(posts: { user_id: [1,2,3,4,5,6] })
@comments.paginate(...)
如果您想从@comments
获取帖子,我会这样做:
class Comment < ActiveRecord::Base
def self.post_ids
all.map(&:post_id)
end
def self.posts
Post.where(id: post_ids)
end
end
然后使用并对其进行分页:
@posts = @comments.posts.paginate(...)