class DatatablesServer::ActiveRecordRepository

Attributes

columns[R]
data[R]
options[R]

Public Class Methods

new(data, columns, options) click to toggle source
# File lib/datatables_server/active_record_repository.rb, line 3
def initialize(data, columns, options)
  @data = data
  @columns = columns
  @options = options
end

Public Instance Methods

count_all() click to toggle source
# File lib/datatables_server/active_record_repository.rb, line 9
def count_all
  data.count
end
count_filtered() click to toggle source
# File lib/datatables_server/active_record_repository.rb, line 13
def count_filtered
  filtered_data.count
end
paginated_data() click to toggle source
# File lib/datatables_server/active_record_repository.rb, line 17
def paginated_data
  ordered_data.limit(options.page_size).offset(options.page_start)
end

Private Instance Methods

conditions() click to toggle source
# File lib/datatables_server/active_record_repository.rb, line 34
def conditions
  columns.join(' LIKE :search OR ') << ' LIKE :search'
end
filtered_data() click to toggle source
# File lib/datatables_server/active_record_repository.rb, line 29
def filtered_data
  return data if options.search_term.empty?
  data.where(conditions, search: "%#{options.search_term}%")
end
ordered_data() click to toggle source
# File lib/datatables_server/active_record_repository.rb, line 25
def ordered_data
  filtered_data.order("#{options.sort_column} #{options.sort_direction}")
end