гем will_paginate не работает

У меня проблема с will_paginate, которую довольно просто выразить:

> Story.paginate(page: 1, per_page: 10).count
=> 20

Очевидно, что это число должно быть 10, а не 20.

Я как-то делаю что-то не так? Кажется, что здесь нет права на ошибку, но явно что-то не так. Что мне не хватает?


person Jason Swett    schedule 03.02.2016    source источник
comment
Можете ли вы опубликовать запрос SQL, который выполнялся в фоновом режиме?   -  person Pavan    schedule 03.02.2016


Ответы (2)


Вы хотите Story.paginate(page: 1, per_page:10).size, а не count. Count фактически вернет общее количество записей, сгенерированных вашим запросом.

person eugen    schedule 03.02.2016

Поскольку will_paginate gem переопределяет метод count

def count(*args)
  if limit_value
    excluded = [:order, :limit, :offset, :reorder]
    excluded << :includes unless eager_loading?
    rel = self.except(*excluded)
    column_name = (select_for_count(rel) || :all)
    rel.count(column_name)
  else
    super(*args)
  end
end

Это исключит order, limit, offset and reorder. ссылка на код

Вы должны использовать size или total_entries

person Long Nguyen    schedule 03.02.2016