Rails - 活动管理员对索引页进行分页

时间:2013-12-10 21:52:47

标签: ruby-on-rails filter pagination activeadmin

我的应用程序中文章模型的Active Admin索引页面需要很长时间才能加载。这是因为有2500条文章条目,因为我启用了过滤器(我需要启用过滤器)。我觉得我已经做了文档推荐的所有内容,当涉及到加快速度时,但不知怎的,它仍在拉动每篇文章(当我只想让它在特定页面上拉出文章时)。也就是说,看起来分页似乎不能正常工作。

以下是代码的示例:

ActiveAdmin.register Article do
    filter :title
    config.sort_order = "published_desc"
    config.per_page = 10

    index :pagination_total => false do |article|
        # code for my columns goes here
    end
end

这是日志中的一些相关输出。即使我只是尝试按标题搜索单个文章(例如使用过滤器),也有很多这种类型的调用:

  MOPED: 127.0.0.1:27017 GET_MORE     database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (258.8489ms)
  MOPED: 127.0.0.1:27017 GET_MORE     database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (234.8890ms)
  MOPED: 127.0.0.1:27017 GET_MORE     database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (269.1431ms)
  MOPED: 127.0.0.1:27017 GET_MORE     database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (240.3183ms)
  MOPED: 127.0.0.1:27017 GET_MORE     database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (250.5591ms)
  MOPED: 127.0.0.1:27017 GET_MORE     database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (403.0311ms)
  MOPED: 127.0.0.1:27017 GET_MORE     database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (250.7601ms)

1 个答案:

答案 0 :(得分:3)

删除特定过滤器通常有助于加快索引视图的速度。问题是ActiveAdmin将所有资源的关系作为过滤器选项加载,其中许多可能不是必需的。

删除未使用的过滤器

可以使用remove_filter方法单独删除过滤器。

ActiveAdmin.register Article do
  remove_filter :category
end

转换为字符串过滤器

另一种方法是更改​​过滤器的类型。很多时候,没有必要通过相关记录来过滤选择。您可以将其定义为基于字符串的过滤器。

ActiveAdmin.register Article do
   # filter :category # <= Slow due to number of categories
   filter :category_name, as: :string
end

自定义过滤器选项

还可以自定义可用的选项,或仅提供选项的子集。

ActiveAdmin.register Article do
   filter :category, collection: proc { Category.limit(10) }
end