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 32 def build_conditions if datatable.searchable? build_conditions_for_datatable else build_conditions_for_selected_columns end end
build_conditions_for_datatable()
click to toggle source
# File lib/ajax-datatables-rails/orm/active_record.rb, line 40 def build_conditions_for_datatable criteria = search_for.inject([]) do |crit, atom| search = Datatable::SimpleSearch.new(value: atom, regex: datatable.search.regexp?) crit << searchable_columns.map do |simple_column| simple_column.search = search simple_column.search_query end.reduce(:or) end.compact.reduce(:and) criteria end
build_conditions_for_selected_columns()
click to toggle source
# File lib/ajax-datatables-rails/orm/active_record.rb, line 51 def build_conditions_for_selected_columns search_columns.map(&:search_query).compact.reduce(:and) end
fetch_records()
click to toggle source
# File lib/ajax-datatables-rails/orm/active_record.rb, line 7 def fetch_records get_raw_records end
filter_records(records)
click to toggle source
# File lib/ajax-datatables-rails/orm/active_record.rb, line 11 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 26 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 55 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 16 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