在 rails3 中,现在几乎所有的查询接口都变成了延迟加载,但是 'will_paginate' 会在你使用 'paginate' 方法后立即访问数据库。我怎样才能使它延迟加载记录?
问问题
1007 次
2 回答
0
我创建了一个非常轻量级的插件,它使用 limit(per_page).offset(page*per_page) 在 Rails 3 下实现分页。因此,它提供了延迟加载,非常适合片段缓存。界面与 will_paginate (@posts.recent.paginate :page=>params[:page]) 相同。目前还没有太多视图助手,但我相信你会发现它很有用:http: //github.com/josei/simple_paginate
于 2011-01-16T20:24:31.623 回答
0
我通过重写 will_paginate 中的许多代码来实现,will_paginate 延迟加载真的很难,因为 will_paginate 有一个核心类'WillPaginate::Collection',它是'Array'的子类。(我不喜欢这个类)
'paginate' 方法生成的所有结果都将返回一个 Collection 实例,因此它将强制将 'ActiveRecord::Relation' 对象放入一个 'Array' 中,这将强制 Relation 立即访问数据库。
于 2010-08-23T09:52:26.857 回答