ActiveAdmin - 如何删除所有对象(不仅仅是当前列表页面上的对象)(Rails')

时间:2015-08-31 18:22:08

标签: ruby-on-rails ruby ruby-on-rails-4 activeadmin

在使用ActiveAdmin的我的ruby on Rails应用程序上,我希望不仅删除显示的30个用户,还要删除所有456个用户(当然这是一个例子)。

当我选择"选择所有'然后确认删除,它只删除当前屏幕页面上可见的30个用户。

我想选择所有用户(在所有视图页面中,不仅是我当前看到的那个),然后手动取消选择前4个用户(或者我将在当前视图页面上手动选择的任何用户)。所以不是真的删除所有用户。这是我的问题。

如何自定义ActiveAdmin才能执行此操作?

3 个答案:

答案 0 :(得分:3)

也许这样可以工作:

https://github.com/activeadmin-plugins/active_admin_scoped_collection_actions

ActiveAdmin的插件。在所有页面上为scoped_collection(过滤器+范围)提供批量更新和删除。

答案 1 :(得分:1)

如果你想从所有用户的列表中删除一些用户,我建议你写一个custom active admin action。最大限度地减少标记,使浏览器易于渲染并为最坏的情况做好准备。如果你有100万条记录,那么它就无法正常工作,没有解决办法。

我建议您接受用户将使用搜索删除记录的事实,如果您确实希望能够删除所有,则可以提供自定义按钮删除所有< / em>那将为你做到这一点。

另一种方法是编写一个带有大量javascript的自定义活动管理操作来提供分页。它仍然有很多自定义代码,没有提供通用解决方案。

最后一种方法,您可以为该活动管理页面禁用分页,但每次加载整个表时可能会遇到很多问题

答案 2 :(得分:0)

您可以覆盖默认批处理操作以销毁/删除所有这些用户:

ActiveAdmin.register User do
  batch_action :destroy do |ids|
    User.delete_all
    redirect_to collection_path, alert: "Deleted all the Users!"
  end
end

有关详细信息,请参阅this