Multi-word query searching across columns

I’m trying to implement a basic name search on a People table with
separate first_name and last_name columns. I am using the
will_paginate plugin and have the following search method in the
model:

def self.search(search, page)
paginate :page => page,
:conditions => [“lower(last_name) like ? or
lower(first_name) like ?”, “%#{search.downcase}%”, “%#{search.downcase}
%”]
end

This works fine if the query entered is a single word like “Bob” - the
last_name field is queried for “Bob” and the first_name field is
queried for “Bob”.

However, if I enter a query like “Bob Dylan”, how would I find the
record(s) where first_name = “Bob” and last_name = “Dylan”? This seems
to be the opposite of “full text search”, unless I’m missing some of
what is possible with the full text search plugins.

I’m new at this - many thanks for any help.

Not tested but mine would look something like

:conditions => [“LOWER(CONCAT(first_name,’ ', last_name)) like ?”, “%
#{search.downcase}%”]

kates

Thanks - that is exactly what I needed. I obviously need to brush up
on my SQL.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs