module MongoModel::Scope::SpawnMethods

Public Instance Methods

except(*exceptions) click to toggle source
# 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) click to toggle source
# 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