Sha256: 1ab9b2030ac8b37347aeb96ede97a3764b29f93888e3ff2ac50158b214e3d0c1
Contents?: true
Size: 853 Bytes
Versions: 62
Compression:
Stored size: 853 Bytes
Contents
# frozen_string_literal: true # Adds a sort method to ActiveRecord class. Given a list of IDs, it will sort # the records in the order of the ids. Assumes that the model has the :position attribute. # # ActiveRecord::Base.class_eval do # include RailsExtensions::ActiveRecord::Sort # end module CoreExtensions module ActiveRecord module Sort def self.included(base) base.extend ClassMethods base.before_create :set_position end module ClassMethods def sort(ids) ids.each_with_index do |id, index| where(id: id).update_all(["position=?", index + 1]) end end end def set_position return unless respond_to?(:position) self.position = (self.class.where("position < 99999").maximum(:position) || 0) + 1 end end end end
Version data entries
62 entries across 62 versions & 1 rubygems