Class: Filterameter::FilterCoordinator
- Inherits:
-
Object
- Object
- Filterameter::FilterCoordinator
- Defined in:
- lib/filterameter/filter_coordinator.rb
Overview
Filter Coordinator
Class FilterCoordinator 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 coordinator stored as a class variable.
The coordinators encapsulate references to the Query Builder and Filter Registry to keep the namespace clean for controllers that implement filter parameters.
Instance Attribute Summary collapse
-
#default_sort_parameters ⇒ Object
readonly
Returns the value of attribute default_sort_parameters.
- #query_variable_name ⇒ Object
Instance Method Summary collapse
- #declarations_validator ⇒ Object
- #default_sort=(sort_and_direction_pairs) ⇒ Object
-
#initialize(controller_name, controller_path) ⇒ FilterCoordinator
constructor
A new instance of FilterCoordinator.
- #model_class=(model_class) ⇒ Object
- #query_builder ⇒ Object
Constructor Details
#initialize(controller_name, controller_path) ⇒ FilterCoordinator
Returns a new instance of FilterCoordinator.
26 27 28 29 |
# File 'lib/filterameter/filter_coordinator.rb', line 26 def initialize(controller_name, controller_path) @controller_name = controller_name @controller_path = controller_path end |
Instance Attribute Details
#default_sort_parameters ⇒ Object (readonly)
Returns the value of attribute default_sort_parameters.
20 21 22 |
# File 'lib/filterameter/filter_coordinator.rb', line 20 def default_sort_parameters @default_sort_parameters end |
#query_variable_name ⇒ Object
39 40 41 |
# File 'lib/filterameter/filter_coordinator.rb', line 39 def query_variable_name @query_variable_name ||= model_class.model_name.plural end |
Instance Method Details
#declarations_validator ⇒ Object
52 53 54 |
# File 'lib/filterameter/filter_coordinator.rb', line 52 def declarations_validator Filterameter::DeclarationsValidator.new(@controller_name, model_class, registry) end |
#default_sort=(sort_and_direction_pairs) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/filterameter/filter_coordinator.rb', line 43 def default_sort=(sort_and_direction_pairs) normalized = Helpers::SortNormalizer.normalize(sort_and_direction_pairs).freeze @default_sort_parameters = normalized @default_sort = normalized.map do |name, direction| RequestedSort.new(name, direction) end.freeze end |
#model_class=(model_class) ⇒ Object
31 32 33 |
# File 'lib/filterameter/filter_coordinator.rb', line 31 def model_class=(model_class) @model_class = model_class.is_a?(String) ? model_class.constantize : model_class end |
#query_builder ⇒ Object
35 36 37 |
# File 'lib/filterameter/filter_coordinator.rb', line 35 def query_builder @query_builder ||= Filterameter::QueryBuilder.new(default_query, @default_sort, registry) end |