Sha256: aa86eb457f7a41692e3651a7657c3255ac0e9d9393db39f3038e87967c64ff5b

Contents?: true

Size: 1010 Bytes

Versions: 3

Compression:

Stored size: 1010 Bytes

Contents

module Coalla
  module SortableAssociation
    def sortable_association(*args)
      unless respond_to?(:sortable_associations)
        class_attribute :sortable_associations, instance_writer: false
        self.sortable_associations = []
      end

      self.sortable_associations += args

      class_eval do
        def assign_nested_attributes_for_collection_association(association_name, attributes_collection)
          association_class = self.class.reflect_on_association(association_name).klass
          if sortable_associations.include?(association_name) && association_class.attribute_names.include?('position')
            attributes_collection.each_with_index do |(key, value), index|
              if key.is_a?(Hash)
                key[:position] = index
              elsif value.is_a?(Hash)
                value[:position] = index
              end
            end
          end
          super
        end
      end
    end
  end
end

ActiveRecord::Base.extend(Coalla::SortableAssociation)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
coalla-cms-0.7.0.0 lib/coalla/orm/sortable_association.rb
coalla-cms-0.6.1.1 lib/coalla/orm/sortable_association.rb
coalla-cms-0.6.0.9 lib/coalla/orm/sortable_association.rb