Как сделать 'will_paginate' lazyload в рельсах 3? - PullRequest
1 голос
/ 19 августа 2010

В rails3 почти все интерфейсы запросов теперь изменяются, чтобы быть ленивыми, но will_paginate сразу же попадет в базу данных после использования метода paginate.Как я могу сделать это lazyload записи?

Ответы [ 2 ]

0 голосов
/ 16 января 2011

Я создал очень легкий плагин, который использует limit (per_page) .offset (page * per_page) для реализации разбиения на страницы под Rails 3. Поэтому он обеспечивает ленивую загрузку, которая отлично подходит для кэширования фрагментов.Интерфейс такой же, как will_paginate (@ posts.recent.paginate: page => params [: page]).Еще не так много помощников для просмотра, но я уверен, что вы найдете это полезным: http://github.com/josei/simple_paginate

0 голосов
/ 23 августа 2010

Я сделал это, переписав много кода в will_paginate. Для will_paginate действительно трудно выполнить отложенную загрузку, потому что will_paginate имеет базовый класс 'WillPaginate :: Collection', который является подклассом 'Array'. (Мне не нравитсяэтот класс)
Все результаты, сгенерированные методом 'paginate', будут возвращать экземпляр Collection, поэтому объект ActiveRecord :: Relation 'будет принудительно превращен в массив' Array ', который заставит Relation сразу же попасть в базу данных.

...