Stronicowanie kolekcji obiektĂłw

Czasami niemożliwe jest stronicowanie kolekcji obiektĂłw przy pomocy :limit i :offset. Z pomocą przychodzi poniższy skrypt:

[code ruby] def paginate_collection(collection, options = {})
default_options = {:per_page => 10, :page => 1}
options = default_options.merge options

pages = Paginator.new self, collection.size, options[:per_page], options[:page]
first = pages.current.offset
last = [first + options[:per_page], collection.size].min
slice = collection[first...last]
return [pages, slice]

end[/code]
Użycie:

@pages, @users = paginate_collection User.find_custom_query, :page => @params[:page]

mam problem właśnie z offsetem chyba. Ten parametr nie ma żadnego wpływu na wyniki wyszukiwania. Może dlatego nie działa mi żaden Paginator ani Paginating Find itp.

Np dla Paginating Find dostaję poprawną liczbę stron ale w zmiennej mam wszystkie elementy (size) za to jak chcę je wyświetlić to okazuje się że nie ma ani jednego. Próbowałem przeinstalowywać, robię wszystko zgodnie z instrukcją.

Chciałem więc wypróbować powyższy kod ale otrzymuję następujący komunikat:

undefined method `find_custom_query’ for Registration:Class

użycie:
@registration_pages, @registrations = paginate_collection Registration.find_custom_query, :page => @params[:page]

aha korzystam z MSSQL 2005 Express. Może to ma jakieś znaczenie.