module AjaxDatatablesRails::ORM::ActiveRecord
Public Instance Methods
build_conditions()
click to toggle source
—————– SEARCH HELPER METHODS ——————–
# File lib/ajax-datatables-rails/orm/active_record.rb, line 28 def build_conditions @build_conditions ||= begin criteria = [build_conditions_for_selected_columns] criteria << build_conditions_for_datatable if datatable.searchable? criteria.compact.reduce(:and) end end
build_conditions_for_datatable()
click to toggle source
rubocop:disable Metrics/AbcSize
# File lib/ajax-datatables-rails/orm/active_record.rb, line 37 def build_conditions_for_datatable columns = searchable_columns.reject(&:searched?) criteria = search_for.inject([]) do |crit, atom| search = Datatable::SimpleSearch.new(value: atom, regex: datatable.search.regexp?) crit << columns.map do |simple_column| simple_column.search = search simple_column.search_query end.compact.reduce(:or) end.compact.reduce(:and) criteria end
build_conditions_for_selected_columns()
click to toggle source
rubocop:enable Metrics/AbcSize
# File lib/ajax-datatables-rails/orm/active_record.rb, line 50 def build_conditions_for_selected_columns search_columns.map(&:search_query).compact.reduce(:and) end
filter_records(records)
click to toggle source
# File lib/ajax-datatables-rails/orm/active_record.rb, line 7 def filter_records(records) records.where(build_conditions) end
paginate_records(records)
click to toggle source
rubocop:enable Style/EachWithObject, Style/SafeNavigation
# File lib/ajax-datatables-rails/orm/active_record.rb, line 22 def paginate_records(records) records.offset(datatable.offset).limit(datatable.per_page) end
search_for()
click to toggle source
# File lib/ajax-datatables-rails/orm/active_record.rb, line 54 def search_for datatable.search.value.split(global_search_delimiter) end
sort_records(records)
click to toggle source
rubocop:disable Style/EachWithObject, Style/SafeNavigation
# File lib/ajax-datatables-rails/orm/active_record.rb, line 12 def sort_records(records) sort_by = datatable.orders.inject([]) do |queries, order| column = order.column queries << order.query(column.sort_query) if column && column.orderable? queries end records.order(Arel.sql(sort_by.join(', '))) end