Class: CloneKit::Cloners::ActiveRecordRulesetCloner

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

Direct Known Subclasses

ActiveRecordMergingRulesetCloner

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model_klass, rules: [], id_generator: IdGenerators::Uuid) ⇒ ActiveRecordRulesetCloner

Returns a new instance of ActiveRecordRulesetCloner.



10
11
12
13
14
# File 'lib/clone_kit/cloners/active_record_ruleset_cloner.rb', line 10

def initialize(model_klass, rules: [], id_generator: IdGenerators::Uuid)
  self.model_klass = model_klass
  self.rules = rules
  self.id_generator = id_generator
end

Instance Attribute Details

#id_generatorObject

Returns the value of attribute id_generator.



8
9
10
# File 'lib/clone_kit/cloners/active_record_ruleset_cloner.rb', line 8

def id_generator
  @id_generator
end

#rulesObject

Returns the value of attribute rules.



8
9
10
# File 'lib/clone_kit/cloners/active_record_ruleset_cloner.rb', line 8

def rules
  @rules
end

Instance Method Details

#clone_ids(ids, operation) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/clone_kit/cloners/active_record_ruleset_cloner.rb', line 16

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