如何对急切加载的关联模型进行分页

时间:2013-12-02 20:34:22

标签: ruby-on-rails will-paginate eager-loading

我有以下代码:

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,这可能吗?怎么样?

1 个答案:

答案 0 :(得分:0)

未经过测试的答案

我不认为那可能,但是:

Comment.joins(:posts).includes(:posts).where(posts: { user_id: [1,2,3,4,5,6] })

我不确定joinsincludes是否可以一起调用。

这会给你一个关于你可以继续处理的评论的关系,你会有热切的帖子:

@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(...)