Sha256: b0ff503e35b055f72c364f24444b1bd952d94103355cf11b584d003ea3d93b3a
Contents?: true
Size: 874 Bytes
Versions: 17
Compression:
Stored size: 874 Bytes
Contents
class ModelSortConfig < Array 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 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 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 def select_opts return self.inject([]) do |m, sort_col| m + sort_col.select_opts end end end
Version data entries
17 entries across 17 versions & 1 rubygems