module ActiveRecord::SpawnMethods

def merge!(other, *rest) # :nodoc:

:nodoc:
def merge!(other, *rest) # :nodoc:
  options = rest.extract_options!
  if other.is_a?(Hash)
    Relation::HashMerger.new(self, other, options[:rewhere]).merge
  elsif other.is_a?(Relation)
    Relation::Merger.new(self, other, options[:rewhere]).merge
  elsif other.respond_to?(:to_proc)
    instance_exec(&other)
  else
    raise ArgumentError, "#{other.inspect} is not an ActiveRecord::Relation"
  end
end