Skip to content

Commit 203a4ea

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

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

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

+14-6
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ 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 << -> {
34+
select = "MIN(#{table_name}.#{model.primary_key}) as #{model.primary_key}, #{table_name}.#{method}"
35+
unscope(:select).select(select).group(method)
36+
}
37+
end
38+
3239
scopes.each do |scope|
3340
items = case scope
3441
when String
@@ -42,16 +49,17 @@ def active_record_get_autocomplete_items(parameters)
4249
end
4350

4451
def get_autocomplete_select_clause(model, method, options)
45-
if sqlite?
52+
base = if sqlite?
4653
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]))
54+
[
55+
"#{table_name}.#{model.connection.quote_column_name(model.primary_key)} as #{model.primary_key}",
56+
"#{table_name}.#{model.connection.quote_column_name(method)} as #{method}"
57+
]
5158
else
5259
table_name = model.table_name
53-
(["#{table_name}.#{model.primary_key}", "#{table_name}.#{method}"] + (options[:extra_data].blank? ? [] : options[:extra_data]))
60+
["#{table_name}.#{model.primary_key}", "#{table_name}.#{method}"]
5461
end
62+
base + (options[:extra_data] || [])
5563
end
5664

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

0 commit comments

Comments
 (0)