Module: FatJam::ActsAsRevisable::CloneAssociations

Defined in:
lib/acts_as_revisable/clone_associations.rb

Class Method Summary collapse

Class Method Details

.clone_association(association, to) ⇒ Object



18
19
20
21
22
# File 'lib/acts_as_revisable/clone_associations.rb', line 18

def clone_association(association, to)
  options = association.options.clone
  options[:foreign_key] ||= "revisable_original_id"
  to.send(association.macro, association.name, options)
end

.clone_associations(from, to) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/acts_as_revisable/clone_associations.rb', line 7

def clone_associations(from, to)
  return unless from.descends_from_active_record? && to.descends_from_active_record?

  to.revision_cloned_associations.each do |key|
    assoc = from.reflect_on_association(key)
    meth = "clone_#{assoc.macro.to_s}_association"
    meth = "clone_association" unless respond_to? meth
    send(meth, assoc, to)
  end
end

.clone_belongs_to_association(association, to) ⇒ Object



24
25
26
# File 'lib/acts_as_revisable/clone_associations.rb', line 24

def clone_belongs_to_association(association, to)
  to.send(association.macro, association.name, association.options.clone)
end

.clone_has_many_association(association, to) ⇒ Object



28
29
30
31
32
# File 'lib/acts_as_revisable/clone_associations.rb', line 28

def clone_has_many_association(association, to)
  options = association.options.clone
  options[:association_foreign_key] ||= "revisable_original_id"
  to.send(association.macro, association.name, options)
end