Class: Filterameter::ControllerFilters
- Inherits:
-
Object
- Object
- Filterameter::ControllerFilters
- Defined in:
- lib/filterameter/controller_filters.rb
Overview
Controller Filters
Class ControllerFilters stores the configuration declared via class-level method calls such as the list of filters and the optionally declared model class. Each controller will have one instance of the controller declarations stored as a class variable.
Instance Attribute Summary collapse
Instance Method Summary collapse
- #add_filter(parameter_name, options) ⇒ Object
- #build_query(filter_params, starting_query) ⇒ Object
-
#initialize(controller_name, controller_path) ⇒ ControllerFilters
constructor
A new instance of ControllerFilters.
- #model_class=(model_class) ⇒ Object
Constructor Details
#initialize(controller_name, controller_path) ⇒ ControllerFilters
Returns a new instance of ControllerFilters.
24 25 26 27 28 29 |
# File 'lib/filterameter/controller_filters.rb', line 24 def initialize(controller_name, controller_path) @controller_name = controller_name @controller_path = controller_path @declarations = {} @filters = Hash.new { |hash, key| hash[key] = filter_factory.build(@declarations[key]) } end |
Instance Attribute Details
#query_variable_name ⇒ Object
39 40 41 |
# File 'lib/filterameter/controller_filters.rb', line 39 def query_variable_name @query_variable_name ||= model_class.model_name.plural end |
Instance Method Details
#add_filter(parameter_name, options) ⇒ Object
35 36 37 |
# File 'lib/filterameter/controller_filters.rb', line 35 def add_filter(parameter_name, ) @declarations[parameter_name.to_s] = Filterameter::FilterDeclaration.new(parameter_name, ) end |
#build_query(filter_params, starting_query) ⇒ Object
43 44 45 46 47 |
# File 'lib/filterameter/controller_filters.rb', line 43 def build_query(filter_params, starting_query) valid_filters(filter_params).reduce(starting_query || model_class.all) do |query, (name, value)| @filters[name].apply(query, value) end end |
#model_class=(model_class) ⇒ Object
31 32 33 |
# File 'lib/filterameter/controller_filters.rb', line 31 def model_class=(model_class) @model_class = model_class.is_a?(String) ? model_class.constantize : model_class end |