Class: Elasticsearch::Persistence::Relation::Merger
- Inherits:
-
Object
- Object
- Elasticsearch::Persistence::Relation::Merger
- Defined in:
- lib/elasticsearch/persistence/relation/merger.rb
Overview
:nodoc:
Constant Summary collapse
- NORMAL_VALUES =
[:where, :first, :last, :filter]
Instance Attribute Summary collapse
-
#other ⇒ Object
readonly
Returns the value of attribute other.
-
#relation ⇒ Object
readonly
Returns the value of attribute relation.
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Instance Method Summary collapse
-
#initialize(relation, other) ⇒ Merger
constructor
A new instance of Merger.
- #merge ⇒ Object
- #normal_values ⇒ Object
Constructor Details
#initialize(relation, other) ⇒ Merger
Returns a new instance of Merger.
47 48 49 50 51 |
# File 'lib/elasticsearch/persistence/relation/merger.rb', line 47 def initialize(relation, other) @relation = relation @values = other.values @other = other end |
Instance Attribute Details
#other ⇒ Object (readonly)
Returns the value of attribute other.
45 46 47 |
# File 'lib/elasticsearch/persistence/relation/merger.rb', line 45 def other @other end |
#relation ⇒ Object (readonly)
Returns the value of attribute relation.
45 46 47 |
# File 'lib/elasticsearch/persistence/relation/merger.rb', line 45 def relation @relation end |
#values ⇒ Object (readonly)
Returns the value of attribute values.
45 46 47 |
# File 'lib/elasticsearch/persistence/relation/merger.rb', line 45 def values @values end |
Instance Method Details
#merge ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/elasticsearch/persistence/relation/merger.rb', line 59 def merge normal_values.each do |name| value = values[name] # The unless clause is here mostly for performance reasons (since the `send` call might be moderately # expensive), most of the time the value is going to be `nil` or `.blank?`, the only catch is that # `false.blank?` returns `true`, so there needs to be an extra check so that explicit `false` values # don't fall through the cracks. unless value.nil? || (value.blank? && false != value) if name == :select relation._select!(*value) elsif name == :filter values.each do |v| relation.send("#{name}!", v.first, v.last) end else relation.send("#{name}!", *value) end end end merge_multi_values merge_single_values #merge_joins relation end |
#normal_values ⇒ Object
55 56 57 |
# File 'lib/elasticsearch/persistence/relation/merger.rb', line 55 def normal_values NORMAL_VALUES end |