@@ -29,6 +29,13 @@ def active_record_get_autocomplete_items(parameters)
29
29
limit ( limit ) . order ( order )
30
30
items = items . where ( where ) unless where . blank?
31
31
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
+
32
39
scopes . each do |scope |
33
40
items = case scope
34
41
when String
@@ -42,16 +49,17 @@ def active_record_get_autocomplete_items(parameters)
42
49
end
43
50
44
51
def get_autocomplete_select_clause ( model , method , options )
45
- if sqlite?
52
+ base = if sqlite?
46
53
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
+ ]
51
58
else
52
59
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 } " ]
54
61
end
62
+ base + ( options [ :extra_data ] || [ ] )
55
63
end
56
64
57
65
def get_autocomplete_where_clause ( model , term , method , options )
0 commit comments