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
enabled
value. -
#render ⇒ {Symbol => Object}?
Renders
false
ifsource
is disabled, otherwise renders the contents ofincludes
value or even the entire hash ifexcludes
also specified. -
#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.
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 |