Module: Bootstrap3AutocompleteInput::Orm::ActiveRecord
- Defined in:
- lib/bootstrap3_autocomplete_input/orm/active_record.rb
Instance Method Summary collapse
- #get_autocomplete_items(parameters) ⇒ Object
- #get_autocomplete_order(column_name, options, model = nil) ⇒ Object
- #get_autocomplete_select_clause(model, column_name, extra_columns, options) ⇒ Object
- #get_autocomplete_where_clause(model, term, column_name, options) ⇒ Object
- #postgres?(model) ⇒ Boolean
Instance Method Details
#get_autocomplete_items(parameters) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/bootstrap3_autocomplete_input/orm/active_record.rb', line 11 def get_autocomplete_items(parameters) model = parameters[:model] term = parameters[:q] || parameters[:term] = parameters[:options] extra_columns = ([:extra_columns] || []).map{|c| c.to_sym} #column_name = options[:column_name] column_name = parameters[:method] # scopes = Array([:scopes]) where = [:where] limit = autocomplete_option_limit() order = get_autocomplete_order(column_name, , model) items = model.all scopes.each { |scope| items = items.send(scope) } unless scopes.empty? items = items.select(get_autocomplete_select_clause(model, column_name, extra_columns, )) unless [:full_model] items = items.where(get_autocomplete_where_clause(model, term, column_name, )). limit(limit).order(order) items = items.where(where) unless where.blank? items end |
#get_autocomplete_order(column_name, options, model = nil) ⇒ Object
4 5 6 7 8 9 |
# File 'lib/bootstrap3_autocomplete_input/orm/active_record.rb', line 4 def get_autocomplete_order(column_name, , model=nil) order = [:order] table_prefix = model ? "#{model.table_name}." : "" order || "#{table_prefix}#{column_name} ASC" end |
#get_autocomplete_select_clause(model, column_name, extra_columns, options) ⇒ Object
40 41 42 43 44 45 46 47 |
# File 'lib/bootstrap3_autocomplete_input/orm/active_record.rb', line 40 def get_autocomplete_select_clause(model, column_name, extra_columns, ) table_name = model.table_name #cols = ([model.primary_key, column_name]+extra_columns).reject { |c| c.nil? || c.blank? || c.empty? } cols = ([model.primary_key, column_name]).reject { |c| c.nil? || c.blank? || c.empty? } #(["#{table_name}.#{model.primary_key}", "#{table_name}.#{column_name}"] + (options[:extra_data].blank? ? [] : options[:extra_data])) cols.map{|c| "#{table_name}.#{c}"} + ([:extra_data].blank? ? [] : [:extra_data]) end |
#get_autocomplete_where_clause(model, term, column_name, options) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/bootstrap3_autocomplete_input/orm/active_record.rb', line 49 def get_autocomplete_where_clause(model, term, column_name, ) table_name = model.table_name is_full_search = [:full] like_clause = (postgres?(model) ? 'ILIKE' : 'LIKE') ["LOWER(#{table_name}.#{column_name}) #{like_clause} ?", "#{(is_full_search ? '%' : '')}#{term.downcase}%"] end |
#postgres?(model) ⇒ Boolean
56 57 58 59 |
# File 'lib/bootstrap3_autocomplete_input/orm/active_record.rb', line 56 def postgres?(model) # Figure out if this particular model uses the PostgreSQL adapter model.connection.class.to_s.match(/PostgreSQLAdapter/) end |