Module: WillSortate::ActiveRecordModelExtension

Defined in:
lib/will_sortate/models/active_record_model_extension.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#sortated_fieldObject (readonly)

Returns the value of attribute sortated_field.



3
4
5
# File 'lib/will_sortate/models/active_record_model_extension.rb', line 3

def sortated_field
  @sortated_field
end

#sortated_orderObject (readonly)

Returns the value of attribute sortated_order.



3
4
5
# File 'lib/will_sortate/models/active_record_model_extension.rb', line 3

def sortated_order
  @sortated_order
end

Instance Method Details

#sortate(order_by, default_order_by) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/will_sortate/models/active_record_model_extension.rb', line 5

def sortate order_by, default_order_by
  regexp = /([\w\.-]+)_(asc|desc)$/
  md = order_by.try(:match, regexp) || default_order_by.match(regexp)
  raise "OrderBy argument has to be specified in the format :field_:direction" unless md

  @sortated_field, @sortated_order = md[1], md[2]
  order("#{sortated_field} #{sortated_order}")
end