class VersionRecord::Sorting::Simple

Handles sorting a collection of AR objects.

This implementation uses in-memory sorting.

Public Class Methods

new(klass, version_column) click to toggle source
# File lib/version_record/sorting/simple.rb, line 9
def initialize(klass, version_column)
  @klass = klass
  @version_column = version_column
end

Public Instance Methods

by_version(direction = :asc) click to toggle source
# File lib/version_record/sorting/simple.rb, line 14
def by_version(direction = :asc)
  collection = @klass.all
  direction.to_sym == :asc ? sort_asc(collection) : sort_desc(collection)
end

Private Instance Methods

sort_asc(collection) click to toggle source
# File lib/version_record/sorting/simple.rb, line 21
def sort_asc(collection)
  collection.sort_by { |object| version(object) }
end
sort_desc(collection) click to toggle source
# File lib/version_record/sorting/simple.rb, line 25
def sort_desc(collection)
  collection.sort { |obj_1, obj_2| version(obj_2) <=> version(obj_1) }
end
version(object) click to toggle source
# File lib/version_record/sorting/simple.rb, line 29
def version(object)
  object.public_send(@version_column)
end