Class: Brainstem::QueryStrategies::FilterOrSearch
- Inherits:
-
BaseStrategy
- Object
- BaseStrategy
- Brainstem::QueryStrategies::FilterOrSearch
- Defined in:
- lib/brainstem/query_strategies/filter_or_search.rb
Instance Method Summary collapse
Methods inherited from BaseStrategy
Constructor Details
This class inherits a constructor from Brainstem::QueryStrategies::BaseStrategy
Instance Method Details
#execute(scope) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/brainstem/query_strategies/filter_or_search.rb', line 4 def execute(scope) if searching? # Search sort_name, direction = [:primary_presenter].calculate_sort_name_and_direction [:params] scope, count, ordered_search_ids = run_search(scope, filter_includes.map(&:name), sort_name, direction) # Load models! primary_models = scope.to_a primary_models = order_for_search(primary_models, ordered_search_ids) else # Filter scope = [:primary_presenter].apply_filters_to_scope(scope, [:params], ) if [:params][:only].present? # Handle Only scope, count = handle_only(scope, [:params][:only]) else # Paginate scope, count = paginate scope end count = count.keys.length if count.is_a?(Hash) # Ordering scope = [:primary_presenter].apply_ordering_to_scope(scope, [:params]) primary_models = evaluate_scope(scope) end [primary_models, count] end |