如何避免使用Ransack的N + 1查询

时间:2014-02-22 03:00:09

标签: ruby-on-rails activerecord ransack rails-bullet

我已经在我的一个项目中使用Ransack并使用Bullet来 在我的控制器中发现一些N + 1个查询。但是,我不太确定在使用Ransack时如何实现这一目标。 涉及两个模型,PatchImage。还有一个Patch has_one Image。 行动代码如下:

  def index
    @q = Patch.search(params[:q])
    @patches = @q.result(distinct: true).order("code DESC").paginate(:page => params[:page], :per_page => 10)
  end

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这对我来说是一个项目。   def指数     @q = Client.includes(zone :: user).ransack(params [:q])     @clients = @ q.result.page(params [:page])。装饰   端

在你的情况下应该是

def index
    @q = Patch.includes(:image).search(params[:q])
    @patches = @q.result(distinct: true).order("code DESC").paginate(:page => params[:page], :per_page => 10)
end