Sha256: f8fe1e5c6915107a7ac440c4b9262af6740ad6da83ece57510c4d7b53f4e1b0f
Contents?: true
Size: 940 Bytes
Versions: 4
Compression:
Stored size: 940 Bytes
Contents
class BMC::Sorter include BMC::SortingHelper attr_reader :collection, :sort_param, :column, :direction def self.call(...) new(...).call end def initialize(collection, sort_param = nil) @collection = collection @sort_param = sort_param @column, @direction = sortable_column_order(sort_param.to_s) end def sort raise NotImplementedError end def call # Don't replace by `collection.reorder(sort)` # #sort can change #collection and must be called before #collection order = sort collection.reorder(order) end private def inverted_direction {asc: :desc, desc: :asc}[direction] end def joins(...) @collection = @collection.joins(...) end def left_joins(...) @collection = @collection.left_joins(...) end def by_column(c = column) {c => direction} end def by_lower(c = column) Arel.sql "LOWER(#{c}) #{direction}" end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
bmc-1.5.0 | app/sorters/bmc/sorter.rb |
bmc-1.4.3 | app/sorters/bmc/sorter.rb |
bmc-1.4.2 | app/sorters/bmc/sorter.rb |
bmc-1.4.1 | app/sorters/bmc/sorter.rb |