Kaminari
参考:
amatsuda/kaminari_themes – GitHub
ドキュメント
参考:
Documentation for kaminari | RubyDoc.info
Documentation for kaminari-core | RubyDoc.info
Documentation for kaminari-actionview | RubyDoc.info
Documentation for kaminari-activerecord | RubyDoc.info
使い方
参考:
gem (Kaminari) でページネーション機能を追加する – Qiita
kaminari を使ってページネーションを作る – Qiita
Rails で kaminari を使ってページネーションを実現する | Rails Webook
page_entries_info
#page_entries_info(collection, options = {}) ⇒ Object
エントリー名を指定する
<%= page_entries_info @posts, entry_name: "item" %> # => Displaying items 6 - 10 of 26 in total
参考:
page_entries_info – kaminari/helper_methods.rb at v1.1.1 · kaminari/kaminari – GitHub
paginate
参考:
Method: Kaminari::Helpers::HelperMethods#paginate — Documentation for kaminari-core | RubyDoc.info
paginate – kaminari/helper_methods.rb at v1.1.1 · kaminari/kaminari – GitHub
Kaminari.paginate_array
@comments = Kaminari.paginate_array(comments).page(params[:page])
参考:
kaminari を使って配列に対してのページャーを作成する – Qiita
kaminari の paginate_array が便利 | それは Books
kaminari さんって配列もいけるんですね | COTegg のバケツ
Method: Kaminari.paginate_array — Documentation for kaminari-core | RubyDoc.info
Kaminari::ActiveRecordExtension
ActiveRecord::Base
が Kaminari::ActiveRecordExtension
によって拡張されている。
::ActiveRecord::Base.send :include, Kaminari::ActiveRecordExtension
参考:
kaminari/activerecord.rb at v1.1.1 · kaminari/kaminari – GitHub
page
def self.#{Kaminari.config.page_method_name}(num = nil) per_page = max_per_page && (default_per_page > max_per_page) ? max_per_page : default_per_page limit(per_page).offset( per_page * ((num = num.to_i - 1) < 0 ? 0 : num) ).extending do include Kaminari::ActiveRecordRelationMethods include Kaminari::PageScopeMethods end end
参考:
kaminari/active_record_model_extension.rb at v1.1.1 · kaminari/kaminari – GitHub
per
参考:
Method: Kaminari::PageScopeMethods#per — Documentation for kaminari-core | RubyDoc.info
paginates_per
参考:
total_pages
参考:
Method: Kaminari::PageScopeMethods#total_pages — Documentation for kaminari-core | RubyDoc.info
total_pages – kaminari/page_scope_methods.rb at v1.1.1 · kaminari/kaminari – GitHub
total_count
参考:
Method: Kaminari::PaginatableArray#total_count — Documentation for kaminari-core | RubyDoc.info
kaminari/active_record_relation_methods.rb at v1.1.1 · kaminari/kaminari – GitHub
without_count
参考:
without_count – kaminari/active_record_relation_methods.rb at v1.1.1 · kaminari/kaminari – GitHub
Kaminari without COUNT – Stack Overflow
SELECT COUNT(*) の上限を設ける
以下のように LIMIT
を使えば、レコードが1万件以上あった場合に最大1万件しかスキャンしない。
SELECT COUNT(*) FROM (SELECT * FROM table_has_many_entries LIMIT 10000);
参考:
MySQL で count(*) の結果がある一定数以下である場合にのみカウントしたい – Qiita
greater than some number without having to get the exact count? – Stack Overflow
COUNT をキャッシュする
参考:
Kaminari が発行する遅い COUNT クエリの結果をキャッシュする | portal shit!
クラウドワークスを支えてないページネーション技術 – Qiita
Kaminari::Helpers::Tag
参考:
kaminari/tags.rb at v1.1.1 · kaminari/kaminari – GitHub
Kaminari::Helpers::Paginator
参考:
kaminari/paginator.rb at v1.1.1 · kaminari/kaminari – GitHub