Class: CloneKit::Cloners::MongoidRulesetCloner

Inherits:
Object
  • Object
show all
Defined in:
lib/clone_kit/cloners/mongoid_ruleset_cloner.rb

Direct Known Subclasses

MongoidMergingRulesetCloner

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model_klass, rules: [], id_generator: CloneKit::IdGenerators::Bson) ⇒ MongoidRulesetCloner

Returns a new instance of MongoidRulesetCloner.



11
12
13
14
15
16
17
# File 'lib/clone_kit/cloners/mongoid_ruleset_cloner.rb', line 11

def initialize(model_klass, rules: [], id_generator: CloneKit::IdGenerators::Bson)
  self.model_klass = model_klass
  self.rules = [
    CloneKit::Rules::AllowOnlyMongoidFields.new(model_klass)
  ] + rules
  self.id_generator = id_generator
end

Instance Attribute Details

#id_generatorObject

Returns the value of attribute id_generator.



9
10
11
# File 'lib/clone_kit/cloners/mongoid_ruleset_cloner.rb', line 9

def id_generator
  @id_generator
end

#rulesObject

Returns the value of attribute rules.



9
10
11
# File 'lib/clone_kit/cloners/mongoid_ruleset_cloner.rb', line 9

def rules
  @rules
end

Instance Method Details

#clone_ids(ids, operation) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/clone_kit/cloners/mongoid_ruleset_cloner.rb', line 19

def clone_ids(ids, operation)
  initialize_cloner(operation)

  map = {}
  result = []

  each_existing_record(ids) do |attributes|
    attributes = clone(attributes)
    result << apply_rules_and_save(map, attributes)
  end

  CloneKit::SharedIdMap.new(operation.id).insert_many(model_klass, map)

  result
end