Sha256: 61d52dde27782adcefbbb330d416024aae82a4962a598f7cb26a2c1a0f3e5a6c

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

module Replication
  module Modules
    module Association

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

      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
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
replication-0.4.1 lib/replication/modules/association.rb
replication-0.4.0 lib/replication/modules/association.rb