Module: Replication::Modules::Association

Defined in:
lib/replication/modules/association.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(model_class) ⇒ Object



5
6
7
# File 'lib/replication/modules/association.rb', line 5

def self.included(model_class)
  model_class.accepts_nested_attributes_for *model_class.replication_config.options[:associations]
end

Instance Method Details

#strand_attributesObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/replication/modules/association.rb', line 9

def strand_attributes
  super
  associations_to_replicate = self.class.replication_config.options[:associations]

  if associations_to_replicate
    if associations_to_replicate.last.class == Hash
      associations_to_replicate.pop
    end

    associations_to_replicate.each do |a|
      association_reflection = self.class.reflect_on_association(a)
      association_model = association_reflection.klass
      attributes_from_association = association_model.column_names.dup
      attributes_from_association.delete('id')
      attributes_from_association.delete(association_reflection.foreign_key)
      @strand_attributes.merge!({
        "#{a}_attributes".to_sym => self.send(association_reflection.name).select(attributes_from_association).to_a.map(&:serializable_hash)
      })
    end 
  end

  @strand_attributes
end