Module: Hammock::Suggest::ClassMethods

Defined in:
lib/hammock/suggest.rb

Instance Method Summary collapse

Instance Method Details

#suggest(given_fields, queries, limit = 15) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/hammock/suggest.rb', line 12

def suggest given_fields, queries, limit = 15
  if (fields = given_fields & columns.map(&:name)).length != given_fields.length
    log "Invalid columns #{(given_fields - fields).inspect}."
  else
    find(:all,
      :limit => limit,
      :order => fields.map {|f| "#{f} ASC" }.join(', '),
      :conditions => [
        fields.map {|f|
          ([ "LOWER(#{table_name}.#{f}) LIKE ?" ] * queries.length).join(' AND ')
        }.map {|clause|
          "(#{clause})"
        }.join(' OR ')
      ].concat(queries.map{|q| "%#{q}%" } * fields.length)
    )
  end
end