module Acts::DataTable::ScopeFilters::ActionController

Public Class Methods

clear_request_filters!() click to toggle source

Clears all active filters from the thread space.

# File lib/acts_as_data_table/scope_filters/action_controller.rb, line 133
def self.clear_request_filters!
  Thread.current[:scope_filters] = nil
end
get_request_data() click to toggle source

Fetches the current request's filter data from the thread space

# File lib/acts_as_data_table/scope_filters/action_controller.rb, line 111
def self.get_request_data
  Acts::DataTable.lookup_nested_hash(Thread.current, :scope_filters)
end
get_request_filters() click to toggle source

Fetches the current request's active filters from the thread space

# File lib/acts_as_data_table/scope_filters/action_controller.rb, line 118
def self.get_request_filters
  self.get_request_data[:filters]
end
get_request_model() click to toggle source

@return [ActiveRecord::Base] the model used for filtering in the current request

# File lib/acts_as_data_table/scope_filters/action_controller.rb, line 125
def self.get_request_model
  model = self.get_request_data[:model]
  model.camelize.constantize
end
included(base) click to toggle source
# File lib/acts_as_data_table/scope_filters/action_controller.rb, line 6
def self.included(base)
  base.send :extend, ClassMethods
end
set_request_filters!(model, filters) click to toggle source

Saves the current request's active filters to the thread space

# File lib/acts_as_data_table/scope_filters/action_controller.rb, line 97
def self.set_request_filters!(model, filters)
  Acts::DataTable.ensure_nested_hash!(Thread.current, :scope_filters)

  current_scopes = filters.inject({}) do |h, (group, scope)|
    h[group] = [scope.keys.first, scope[scope.keys.first]]
    h
  end

  Thread.current[:scope_filters] = {:model => model.to_s, :filters => current_scopes}
end

Public Instance Methods

current_scope_filters() click to toggle source

Returns the currently active scope filters

This function should only be used when the automatic scope with_scope_filters is not working due to a different execution time or thread, e.g. a background worker.

# File lib/acts_as_data_table/scope_filters/action_controller.rb, line 86
def current_scope_filters
  Acts::DataTable::ScopeFilters::ActionController.get_request_filters
end