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
|