module ModerateActions extend ActiveSupport::Concern include Polymorphic PER_PAGE = 50 def index @resources = @resources.send(@current_filter) .send("sort_by_#{@current_order}") .page(params[:page]) .per(PER_PAGE) set_resources_instance end def hide hide_resource resource end def moderate set_resource_params @resources = @resources.where(id: params[:resource_ids]) if params[:hide_resources].present? @resources.accessible_by(current_ability, :hide).each { |resource| hide_resource resource } elsif params[:ignore_flags].present? @resources.accessible_by(current_ability, :ignore_flag).each(&:ignore_flag) elsif params[:block_authors].present? author_ids = @resources.pluck(author_id) User.where(id: author_ids).accessible_by(current_ability, :block).each { |user| block_user user } end redirect_with_query_params_to(action: :index) end private def load_resources @resources = resource_model.accessible_by(current_ability, :moderate) end def hide_resource(resource) resource.hide Activity.log(current_user, :hide, resource) end def block_user(user) user.block Activity.log(current_user, :block, user) end def set_resource_params params[:resource_ids] = params["#{resource_name}_ids"] params[:hide_resources] = params["hide_#{resource_name.pluralize}"] end def author_id :author_id end end