Skip to content

Commit b82da28

Browse files
committed
Add unique option
Use unique option to remove dulidate result: autocomplete :item, :brand, full: true, unique: true
1 parent d563ed9 commit b82da28

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

lib/rails-jquery-autocomplete/orm/active_record.rb

+11-6
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ def active_record_get_autocomplete_items(parameters)
2929
limit(limit).order(order)
3030
items = items.where(where) unless where.blank?
3131

32+
if options[:unique]
33+
scopes << lambda { unscope(:select).select("MIN(#{table_name}.#{model.primary_key}) as #{model.primary_key}, #{table_name}.#{method}").group(method) }
34+
end
35+
3236
scopes.each do |scope|
3337
items = case scope
3438
when String
@@ -42,16 +46,17 @@ def active_record_get_autocomplete_items(parameters)
4246
end
4347

4448
def get_autocomplete_select_clause(model, method, options)
45-
if sqlite?
49+
base = if sqlite?
4650
table_name = model.quoted_table_name
47-
([
48-
"#{table_name}.#{model.connection.quote_column_name(model.primary_key)} as #{model.primary_key}",
49-
"#{table_name}.#{model.connection.quote_column_name(method)} as #{method}"
50-
] + (options[:extra_data].blank? ? [] : options[:extra_data]))
51+
[
52+
"#{table_name}.#{model.connection.quote_column_name(model.primary_key)} as #{model.primary_key}",
53+
"#{table_name}.#{model.connection.quote_column_name(method)} as #{method}"
54+
]
5155
else
5256
table_name = model.table_name
53-
(["#{table_name}.#{model.primary_key}", "#{table_name}.#{method}"] + (options[:extra_data].blank? ? [] : options[:extra_data]))
57+
["#{table_name}.#{model.primary_key}", "#{table_name}.#{method}"]
5458
end
59+
base + ( options[:extra_data] || [] )
5560
end
5661

5762
def get_autocomplete_where_clause(model, term, method, options)

0 commit comments

Comments
 (0)