Class: ModelSortConfig

Inherits:
Array
  • Object
show all
Defined in:
lib/sql_search_n_sort/model_sort_config.rb

Instance Method Summary collapse

Constructor Details

#initialize(*cols) ⇒ ModelSortConfig

Returns a new instance of ModelSortConfig.



3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/sql_search_n_sort/model_sort_config.rb', line 3

def initialize(*cols)
  cols.each do |col|
    if col.is_a? Hash
      opts_hash = col.fetch(col.keys.first)
      self << SortColumn.new(col.keys.first, opts_hash)
    else
      self << SortColumn.new(col)
    end

  end
  
end

Instance Method Details

#get_order(sort_by, dir, def_sort_col, base_class) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/sql_search_n_sort/model_sort_config.rb', line 16

def get_order(sort_by, dir, def_sort_col, base_class)
  if sort_column_obj = self.sortable_column(sort_by)
    # {sort_by => dir}
    ar_class = sort_column_obj.joined_table ? sort_column_obj.joined_table.to_s.classify.constantize : base_class
    ar_class.arel_table[sort_by].send(dir)
  else
    {def_sort_col => dir} if def_sort_col
  end
end

#select_optsObject



31
32
33
34
35
# File 'lib/sql_search_n_sort/model_sort_config.rb', line 31

def select_opts
  return self.inject([]) do |m, sort_col|
    m + sort_col.select_opts
  end 
end

#sortable_column(col) ⇒ Object



26
27
28
29
# File 'lib/sql_search_n_sort/model_sort_config.rb', line 26

def sortable_column(col)
  #returns nil if no matching sortable columns
  self.select { |model_sort_config| model_sort_config.send("column") == col.to_s }.first
end