Module: Coalla::SortableAssociation

Defined in:
lib/coalla/orm/sortable_association.rb

Instance Method Summary collapse

Instance Method Details

#sortable_association(*args) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/coalla/orm/sortable_association.rb', line 3

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