Sha256: 5485da2c2276bc05f9985bde6cea7cd2456a8437b4fdec85edecd174f8e83b8e
Contents?: true
Size: 921 Bytes
Versions: 6
Compression:
Stored size: 921 Bytes
Contents
module Para module Orderable extend ActiveSupport::Concern included do scope :ordered, -> { order("#{ table_name }.position ASC") } before_create :orderable_assign_position end def orderable_assign_position return if attribute_present?(:position) last_resource = self.class.unscoped .ordered .where.not(position: nil) .select(:position) .first self.position = if last_resource && last_resource.position last_resource.position + 1 else 0 end end end module ActiveRecordOrderableMixin extend ActiveSupport::Concern included do class_attribute :orderable end module ClassMethods def acts_as_orderable return if orderable? self.orderable = true include Para::Orderable end def orderable? !!orderable end end end end
Version data entries
6 entries across 6 versions & 1 rubygems