Class: CrossOrigin::Criteria

Inherits:
Mongoid::Criteria
  • Object
show all
Defined in:
lib/cross_origin/criteria.rb

Instance Method Summary collapse

Constructor Details

#initialize(criteria) ⇒ Criteria

Returns a new instance of Criteria.



4
5
6
# File 'lib/cross_origin/criteria.rb', line 4

def initialize(criteria)
  criteria.instance_values.each { |name, value| instance_variable_set(:"@#{name}", value) }
end

Instance Method Details

#cross(origin = :default) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/cross_origin/criteria.rb', line 8

def cross(origin = :default)
  origin = CrossOrigin.to_name(origin)
  cross_origin = CrossOrigin[origin]
  return unless cross_origin || origin == :default
  origins = Hash.new { |h, k| h[k] = [] }
  docs = []
  each do |record|
    unless record.origin == origin
      origins[record.collection] << record.id
      doc = record.attributes.dup
      doc['origin'] = origin
      docs << doc
    end
  end
  ((cross_origin && cross_origin.collection_for(klass)) || klass.collection).insert_many(docs) unless docs.empty?
  origins.each {|collection, ids| collection.find(_id: {'$in' => ids}).delete_many }
end