Проблема с will_paginate и mongodb - PullRequest
       15

Проблема с will_paginate и mongodb

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

Stack

  1. ruby ​​=> 1.9.2-head
  2. рельсы => 3.0.1
  3. will_paginate => (3.0.pre2)
  4. Монго => (1.1.5)
  5. mongoid => (2.0.0.beta.20)
  6. mongoid_slug => (0.4.6)

Консоль

r = Radar.criteria
=> #<Mongoid::Criteria:0x00000104753d48 @selector={}, @options={}, @klass=Radar,     @documents=[]> 
r.map(&:title) 
=> ["1", "2", "3", "4", "5", "6"]

r.active.around(Radius.new,current_location).newest.map(&:title)
=> ["6", "5", "4", "3", "2", "1"] 

Задача

Шаг 1

r.active.around(Radius.new,current_location).newest.paginate(:page => 1, :per_page => 3).map(&:title)
=> ["3", "2", "1"] ] 

Шаг 2

r.active.around(Radius.new,current_location).newest.paginate(:page => 2, :per_page => 3).map(&:title)
=>["3", "2", "1"]

На шаге 1 нумерация страниц должна возвращаться => ["6", "5", "4]

Когда я изменяю самую новую область на Most_commented все работает нормально.

r.active.around(Radius.new,current_location).most_commented.map(&:title)
=> ["1", "2", "3", "4", "5", "6"]

r.active.around(Radius.new,current_location).most_commented.paginate(:page =>1 ,:per_page => 3).map(&:title)
=> ["1", "2", "3"]

r.active.around(Radius.new,current_location).most_commented.paginate(:page =>2 ,:per_page => 3).map(&:title)
=> ["4", "5", "6"]

Области применения, используемые в коноле

 scope :most_commented, :order_by => [:comment_count,:desc]
 scope :newest, :order_by => [:created_at,:desc]  

 def self.around(distance,location)
  radius = distance.to_rad
  near(:coords => location.coords + [radius])
 end

ps: я всегда использую новые r = Radar.criteria в каждом примере, который я удалил из вывода для упрощения

1 Ответ

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

Я обнаружил, что .near doesent хорошо работает с пропуском

ruby-1.9.2-head> r = Radar.criteria

Все работает

ruby-1.9.2-head > r.active.near(:coords => ul.coords).newest.map(&:title)
=> ["6", "5", "4", "3", "2", "1"] 

То жезапрос, но с .skip

ruby-1.9.2-head > r.active.near(:coords => ul.coords).newest.skip(2).map(&:title)
=> [] 

Первый запрос с .skip, но без .near

ruby-1.9.2-head > r.active.newest.skip(2).map(&:title)
=> ["4", "3", "2", "1"] 
...