Module: MongoModel::Scope::SpawnMethods

Included in:
MongoModel::Scope
Defined in:
lib/mongomodel/support/scope/spawn_methods.rb

Instance Method Summary collapse

Instance Method Details

#except(*exceptions) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/mongomodel/support/scope/spawn_methods.rb', line 22

def except(*exceptions)
  result = self.class.new(klass)
  
  MULTI_VALUE_METHODS.each do |method|
    result.send(:"#{method}_values=", send(:"#{method}_values")) unless exceptions.include?(method)
  end
  
  SINGLE_VALUE_METHODS.each do |method|
    result.send(:"#{method}_value=", send(:"#{method}_value")) unless exceptions.include?(method)
  end
  
  result
end

#merge(scope) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/mongomodel/support/scope/spawn_methods.rb', line 4

def merge(scope)
  result = clone
  
  MULTI_VALUE_METHODS.each do |method|
    values = send(:"#{method}_values") + scope.send(:"#{method}_values")
    result.send(:"#{method}_values=", values.uniq)
  end
  
  SINGLE_VALUE_METHODS.each do |method|
    value = scope.send(:"#{method}_value")
    result.send(:"#{method}_value=", value) if value
  end
  
  result.on_load_proc = scope.on_load_proc
  
  result
end