ruby-on-rails 如何在rails 3中使'will_paginate' lazyload?

mzsu5hc0  于 2023-06-25  发布在  Ruby
关注(0)|答案(2)|浏览(170)

在rails3中,几乎所有的查询接口现在都变成了lazyloading,但是在你使用paginate方法后,will_paginate会立即访问数据库。我怎样才能使它成为lazyload记录?

xvw2m8pv

xvw2m8pv1#

我在will_paginate中重写了很多代码,对于will_paginate来说很难延迟加载,因为will_paginate有一个核心类'WillPaginate::Collection',它是'Array'的子类。(我不喜欢这个类)
“paginate”方法生成的所有结果都将返回一个Collection示例,因此它将强制“ActiveRecord::Relation”对象进入“Array”,这将强制Relation立即命中数据库。

uyto3xhc

uyto3xhc2#

我创建了一个非常轻量级的插件,它使用limit(per_page).offset(page*per_page)在Rails 3下实现分页。因此,它提供了延迟加载,这对于片段缓存来说是非常好的。接口与will_paginate(@posts.recent.paginate:page=>params[:page])相同。目前还没有太多的视图助手,但我相信你会发现它很有用:http://github.com/josei/simple_paginate

相关问题