Module: DataTable::Mongoid::ClassMethods
- Defined in:
- lib/data_table/mongoid.rb
Instance Method Summary collapse
- #_find_objects(params, fields, search_fields) ⇒ Object
- #_matching_count(params, search_fields) ⇒ Object
- #_order_by_fields(params, fields) ⇒ Object
- #_sanitize(string) ⇒ Object
- #_where_conditions(raw_query, search_fields) ⇒ Object
Instance Method Details
#_find_objects(params, fields, search_fields) ⇒ Object
4 5 6 7 8 9 |
# File 'lib/data_table/mongoid.rb', line 4 def _find_objects params, fields, search_fields self.where(_where_conditions params[:ssearch], search_fields). order_by(_order_by_fields params, fields). page(_page params). per(_per_page params) end |
#_matching_count(params, search_fields) ⇒ Object
11 12 13 |
# File 'lib/data_table/mongoid.rb', line 11 def _matching_count params, search_fields self.where(_where_conditions params[:ssearch], search_fields).count end |
#_order_by_fields(params, fields) ⇒ Object
37 38 39 |
# File 'lib/data_table/mongoid.rb', line 37 def _order_by_fields params, fields [fields[params[:isortcol_0].to_i], params[:ssortdir_0] || "asc"] end |
#_sanitize(string) ⇒ Object
41 42 43 |
# File 'lib/data_table/mongoid.rb', line 41 def _sanitize string string.to_s.strip.gsub(/([\^\\\/\.\+\*\?\|\[\]\(\)\{\}\$])/) { "\\#{$1}" } end |
#_where_conditions(raw_query, search_fields) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/data_table/mongoid.rb', line 15 def _where_conditions raw_query, search_fields query = _sanitize raw_query return if (query = _sanitize raw_query).blank? if search_fields.size == 1 terms = query.split(/\s+/) if terms.size == 1 {search_fields.first => /#{terms.first}/i} else {search_fields.first => {"$all" => terms.map {|term| /#{term}/i }}} end else terms = query.split(/\s+/) terms_and_fields = terms.map do |term| {"$or" => search_fields.map {|field| {field => /#{term}/i} }} end {"$and" => terms_and_fields} end end |