class Presenting::Sorting
Public Instance Methods
default()
click to toggle source
The default sorting, if no known fields are found in the parameters. Default sorting is specified by name/direction, using an array.
Example:
@sorting.default = [:name, 'asc']
# File lib/presenting/sorting.rb, line 45 def default @default ||= "#{fields.first.sql} ASC" end
default=(val)
click to toggle source
# File lib/presenting/sorting.rb, line 48 def default=(val) @default = "#{fields.find{|f| f.name == val.first.to_s}.sql} #{desc_or_asc val.second}" end
fields()
click to toggle source
# File lib/presenting/sorting.rb, line 25 def fields @fields ||= FieldSet.new end
fields=(obj)
click to toggle source
I want to support two configuration formats:
Sorting.new(:fields => [:first_name, :last_name, :email]) Sorting.new(:fields => { 'name' => 'CONCAT(first_name, last_name)', 'email' => 'email_address' })
# File lib/presenting/sorting.rb, line 13 def fields=(obj) case obj when Array obj.each do |name| fields << name end when Hash obj.each do |k, v| fields << {k => v} end end end
to_sql(param)
click to toggle source
# File lib/presenting/sorting.rb, line 29 def to_sql(param) fields.each do |field| # search for and return the first known field return "#{field.sql} #{desc_or_asc param[field.name]}" if param[field.name] end unless param.blank? # no known fields found default end
Protected Instance Methods
desc_or_asc(val)
click to toggle source
# File lib/presenting/sorting.rb, line 54 def desc_or_asc(val) val.to_s.downcase == 'desc' ? 'DESC' : 'ASC' end