class RailsCoreExtensions::PositionInitializer
Public Class Methods
new(model_class, scope_name = nil, position_column = nil)
click to toggle source
# File lib/rails_core_extensions/position_initializer.rb, line 3 def initialize(model_class, scope_name = nil, position_column = nil) @model_class = model_class @scope_name = scope_name @position_column = position_column @position_column ||= :position end
Public Instance Methods
positionalize()
click to toggle source
# File lib/rails_core_extensions/position_initializer.rb, line 10 def positionalize groups.each do |objects| objects.each.with_index do |object, index| next if object.position == index + 1 scope = @model_class.where(id: object.id) scope.update_all(@position_column => index + 1) end end end
Private Instance Methods
groups()
click to toggle source
# File lib/rails_core_extensions/position_initializer.rb, line 22 def groups objects = @model_class.order(@position_column) @scope_name ? objects.group_by(&@scope_name.to_sym).values : [objects] end