@@ -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 << lambda {
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