約束の地

キャロの想い出

Kaminari の バージョン 1.0.0 以降では直接ページ総数を取得する方法はない(ようだ)

追記

以下の内容は大きな勘違いの可能性(検索力不足)。READMEを参照。

https://github.com/kaminari/kaminari/blob/master/README.md

Kaminari

説明するまでもないぐらいに、有名で素敵なプロダクトです。

ページ総数を取得したいが……

今現在、何ページあるうちの何ページ目にいるのか、を表示したいと思って便利メソッドを探したのですが……。ちょっと前の記事ですと、#num_pagesという便利メソッドがあったようですが、今使ってみるとエラーになります。

各種バージョンは以下のとおりです。

Rails version: 5.1.4
Ruby version: 2.4.1 (x86_64-linux)
kaminari (1.0.1)
kaminari-actionview (1.0.1)
kaminari-activerecord (1.0.1)
kaminari-core (1.0.1)

Kaminari バージョン 1.0.0 からの変更点

またしばらくハマっていたところ、以下の記事を見つけました。

上記記事によると、以下のとおりです。

...総ページ数を表示することは原理的に不可能になるが、#link_to_next_page メソッドと #link_to_previous_page メソッドは count クエリ無しで利用することができる。...

うーん。

実際のところは

とはいえ、#total_countメソッドは使えるので、これを用いて総レコード数を取得し、1ページあたりの表示件数で割れば、総ページ数を取得することはできます。

もっとも、データベースの規模が大きかったりリアルタイムでデータがガンガン追加される場合は毎回総数を取得するわけにもいかず、実際の状態との食い違いも出てきてしまうでしょう*1

完璧を求めるといろいろ大変なので、適度にいい感じに作っていくのがよいのかもしれません。

*1:だからこそこのような仕様に変更したのでしょうし

Powered by はてなブログ