Rails4
activeadmin
active_admin

activeadminでCSVダウンロード時のみpaginate外す

More than 1 year has passed since last update.

paginateをtrueにしていると、CSVダウンロード時にも有効になってしまう。
CSVダウンロード時にはpaginateしたくない。そんな時の対処。

あらかじめ、最大件数を設定しておく

config/initializers/active_admin.rb
config.max_per_page = 60_000

モンキーパッチ当てる(どこかから拾ったんですが・・w)

lib/monkey_patches/active_admin/resource_controller/collection/pagination.rb
module ActiveAdmin
  class ResourceController
    module Collection
      module Pagination
        def per_page
          return max_per_page if request.format == 'text/csv'
          return max_per_page if active_admin_config.paginate == false
          @per_page || active_admin_config.per_page
        end
      end
    end
  end
end

これでOKです。 CSVダウンロード時のみ、最大件数まで取得できます
ちなみに、他のメソッド内とかで呼びたい時は基本、

config.max_per_page

でいいのですが、たまにnilで返ってくる時があります。(なんか拡張するようなコード書いてる時etc...)
そんな時は、

active_admin_config.namespace.application.max_per_page

で設定した最大件数が取得できる・・・はず。

何かの参考になれば