如何检查Activeadmin中的所有过滤记录?

时间:2016-05-23 09:27:26

标签: ruby-on-rails activeadmin

我按标准过滤了一些用户的记录。现在我想发送一封电子邮件给所有人,不仅仅是第一页上的用户。如何检查所有过滤的用户? 类似的东西:

collection_action :check_filtered do |items|
    items = collection
    items.check_filtered
end

更新 经过大量的阅读后,我希望能更清楚。

如何访问过滤后的收藏?

action_item(:index) do                                                         
  link_to('notify filtered', notify_filtered_admin_users_path(params['q']))  
end 

将邮件发送给所有已过滤的用户的收集操作应该是什么?

1 个答案:

答案 0 :(得分:0)

问题解决了。 Here 该行应编辑:

instance_exec(resource_class.ransack(params[:q]).pluck(:id), options, &block)

到:

instance_exec(resource_class.ransack(params[:q]).result.pluck(:id), options, &block)

<强>更新 以下是与范围一起使用的扩展变体:

module ActiveAdmin
    class DSL
      def filtered_batch_action(title, options, &block)
        self.batch_action title, options do |ids, options|
          if params[:collection_selection_toggle_all] != "on"
            instance_exec(ids, options, &block)
          else
            # pluck is ActiveRecord specific, probably needs abstracting
            if params[:q].nil?
              if params[:scope].nil?
                instance_exec(resource_class.pluck(:id), options, &block)
              else
                instance_exec(resource_class.send(params[:scope]).pluck(:id), options, &block)
              end
            else
              instance_exec(resource_class.ransack(params[:q]).result.send(params[:scope]).pluck(:id), options, &block)
            end
          end
        end
      end
    end
  end