在rails3中,几乎所有的查询接口现在都变成了lazyloading,但是在你使用paginate方法后,will_paginate会立即访问数据库。我怎样才能使它成为lazyload记录?
xvw2m8pv1#
我在will_paginate中重写了很多代码,对于will_paginate来说很难延迟加载,因为will_paginate有一个核心类'WillPaginate::Collection',它是'Array'的子类。(我不喜欢这个类)“paginate”方法生成的所有结果都将返回一个Collection示例,因此它将强制“ActiveRecord::Relation”对象进入“Array”,这将强制Relation立即命中数据库。
uyto3xhc2#
我创建了一个非常轻量级的插件,它使用limit(per_page).offset(page*per_page)在Rails 3下实现分页。因此,它提供了延迟加载,这对于片段缓存来说是非常好的。接口与will_paginate(@posts.recent.paginate:page=>params[:page])相同。目前还没有太多的视图助手,但我相信你会发现它很有用:http://github.com/josei/simple_paginate
2条答案
按热度按时间xvw2m8pv1#
我在will_paginate中重写了很多代码,对于will_paginate来说很难延迟加载,因为will_paginate有一个核心类'WillPaginate::Collection',它是'Array'的子类。(我不喜欢这个类)
“paginate”方法生成的所有结果都将返回一个Collection示例,因此它将强制“ActiveRecord::Relation”对象进入“Array”,这将强制Relation立即命中数据库。
uyto3xhc2#
我创建了一个非常轻量级的插件,它使用limit(per_page).offset(page*per_page)在Rails 3下实现分页。因此,它提供了延迟加载,这对于片段缓存来说是非常好的。接口与will_paginate(@posts.recent.paginate:page=>params[:page])相同。目前还没有太多的视图助手,但我相信你会发现它很有用:http://github.com/josei/simple_paginate