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 |