Class: LcpRuby::Search::QuickSearch
- Inherits:
-
Object
- Object
- LcpRuby::Search::QuickSearch
- Defined in:
- lib/lcp_ruby/search/quick_search.rb
Class Method Summary collapse
-
.apply(scope, query, model_class, model_definition, searchable_field_names: nil) ⇒ Object
Applies type-aware quick text search across searchable fields.
Class Method Details
.apply(scope, query, model_class, model_definition, searchable_field_names: nil) ⇒ Object
Applies type-aware quick text search across searchable fields. Returns a narrowed scope or the original scope if query is blank.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/lcp_ruby/search/quick_search.rb', line 9 def self.apply(scope, query, model_class, model_definition, searchable_field_names: nil) return scope if query.blank? # Escape hatch: model override if model_class.respond_to?(:default_query) return scope.merge(model_class.default_query(query)) end searchable_fields = searchable_field_definitions(model_class, model_definition, searchable_field_names) conditions = build_conditions(query, model_class, searchable_fields) # Include searchable custom fields if model_definition.custom_fields_enabled? cf_conditions = build_custom_field_conditions(query, model_definition) conditions.concat(cf_conditions) end # Non-empty query but no conditions means no fields could match return scope.none if conditions.empty? scope.where(conditions.reduce(:or)) end |