2013-10-29 44 views
15

上次我遇到了问题active_admin。在我有5000多行数据的表格中,它的工作速度非常缓慢。我如何优化它?也许有人知道这个模块的一些异步加载插件?如何优化active_admin

回答

35

有几件事你可以做。

默认情况下,Active Admin将关联加载为索引页上的下拉筛选器。如果这些过滤器没有被使用,它将帮助删除它们,因为它们实例化该模型的每个记录来构建下拉列表。

ActiveAdmin.register Post do 
    remove_filter :categories 
end 

如果您的索引页包含依赖于关联记录的列,则有助于加载它们。

ActiveAdmin.register Post do 
    controller do 
    def scoped_collection 
     super.includes :author, :publisher 
    end 
    end 
end 

这并不真正适用,因为你只能有5000条记录,但如果你去的地方,甚至表的DB COUNT需要很长的时间点,您可能需要禁用在底部计数索引页面的右侧。 (此功能是在0.6.1中添加的)

ActiveAdmin.register Post do 
    index pagination_total: false 
end 
+3

谢谢!这是一个很好的答案! – itdxer

+0

将过滤器设置为类似'filter:association,比如:select,collection: - > {Association.pluck:id}'...与为每个'association'实例化一个Ruby对象相比,如果您无条件地过滤“关联”,行是否为默认行? – mecampbellsoup

+0

是的,这会有很大的帮助。但是,您还需要确保同时传递一个人性化的名称。例如:'Author.pluck(:name,:id)' – seanlinsley