Class: Chewy::Search::Parameters::Source
- Defined in:
- lib/chewy/search/parameters/source.rb
Overview
This storage handles either an array of strings/symbols
or a hash with includes and excludes keys and
arrays of strings/symbols as values. Any other key is ignored.
Instance Attribute Summary
Attributes inherited from Storage
Instance Method Summary collapse
- 
  
    
      #merge!(other)  ⇒ {Symbol => Array<String>, true, false} 
    
    
  
  
  
  
  
  
  
  
  
    Requires an additional logic to merge enabledvalue.
- 
  
    
      #render  ⇒ {Symbol => Object}? 
    
    
  
  
  
  
  
  
  
  
  
    Renders falseifsourceis disabled, otherwise renders the contents ofincludesvalue or even the entire hash ifexcludesalso specified.
- 
  
    
      #update!(other_value)  ⇒ {Symbol => Array<String>, true, false} 
    
    
  
  
  
  
  
  
  
  
  
    If array or simple string/symbol is passed, it is treated as a part of includesarray and gets concatenated with it.
Methods inherited from Storage
Constructor Details
This class inherits a constructor from Chewy::Search::Parameters::Storage
Instance Method Details
#merge!(other) ⇒ {Symbol => Array<String>, true, false}
Requires an additional logic to merge enabled value.
| 38 39 40 41 | # File 'lib/chewy/search/parameters/source.rb', line 38 def merge!(other) super update!(other.value[:enabled]) end | 
#render ⇒ {Symbol => Object}?
Renders false if source is disabled, otherwise renders the
contents of includes value or even the entire hash if excludes
also specified.
| 49 50 51 52 53 54 55 56 57 | # File 'lib/chewy/search/parameters/source.rb', line 49 def render if !value[:enabled] {self.class.param_name => false} elsif value[:excludes].present? {self.class.param_name => value.slice(:includes, :excludes).reject { |_, v| v.blank? }} elsif value[:includes].present? {self.class.param_name => value[:includes]} end end | 
#update!(other_value) ⇒ {Symbol => Array<String>, true, false}
If array or simple string/symbol is passed, it is treated
as a part of includes array and gets concatenated with it.
In case of hash, respective values are concatenated as well.
| 26 27 28 29 30 31 | # File 'lib/chewy/search/parameters/source.rb', line 26 def update!(other_value) new_value = normalize(other_value) new_value[:includes] = value[:includes] | new_value[:includes] new_value[:excludes] = value[:excludes] | new_value[:excludes] @value = new_value end |