class Sortable::Sort
Attributes
args[R]
scope[R]
Public Class Methods
new(scope, column, direction, *args)
click to toggle source
# File lib/sortable.rb, line 34 def initialize(scope, column, direction, *args) @scope = scope @column = column @direction = direction @args = args end
Public Instance Methods
all()
click to toggle source
# File lib/sortable.rb, line 45 def all all = scope.all if column all = all.merge(column.scope) if column.scope.present? if column.method all = all.public_send(column.method, direction.to_sym, *args) elsif column.column.is_a?(Symbol) all = all.order(column.column => direction) else all = all.order("#{column.column} #{direction}") end end all end
column()
click to toggle source
# File lib/sortable.rb, line 67 def column columns[@column.to_s]&.first end
columns()
click to toggle source
# File lib/sortable.rb, line 41 def columns @columns ||= create_columns end
create_column(column)
click to toggle source
# File lib/sortable.rb, line 78 def create_column(column) if column.respond_to?(:last) && column.last.is_a?(Hash) Column.new(*column[0...-1], **column.last) else Column.new(*column) end end
create_columns()
click to toggle source
# File lib/sortable.rb, line 71 def create_columns scope.sortable.flat_map do |columns| columns = [columns] unless columns.all? { |column| column.is_a?(Symbol) } columns.map { |column| create_column(column) } end.group_by { |column| column.name.to_s } end
direction()
click to toggle source
# File lib/sortable.rb, line 63 def direction @direction.to_s == "desc" ? "desc" : "asc" end