Using OR in a complex condition


#1

Sorry to bother everyone again, but I’m trying to extend this
functionality just a little bit further before calling it a day.

def auto_complete_responder_for_contacts(value)

user = User.find(current_user.id)
@contactss = user.contacts.find(:all,
:conditions => [ ‘LOWER(fullname) LIKE
?’,’%’ + value.downcase + ‘%’],
:order => ‘fullname ASC’,
:limit => 8)
render :partial => ‘contacts’ and return

end

As this stands right now, everything works. :slight_smile: What I’m trying to do is
to have it search for multiple conditions and not just the fullname
field. For instance, there is a city field in the contacts table. I
would like a user to be able to type in the city and also have it
compare against that part of the table.

Unfortunately, I can’t seem to group off the first condition so that I
can use an OR to add a new one. ( ) draws a syntax error. " " kills the
functionality altogether. Is there another way?


#2

:conditions => [( ‘LOWER(fullname) LIKE
?) OR (LOWER(city) LIKE ?)’,’%’ + value.downcase + ‘%’,’%’ +
value.downcase + ‘%’]

that doesn’t work?


#3

Unfortunately not.

app/controllers/desk_controller.rb:148: syntax error, unexpected ‘,’,
expecting ‘)’
:conditions => [( ‘LOWER(fullname) LIKE
?) OR (LOWER(email) LIKE ?)’,’%’ + value.downcase + ‘%’,’%’ +
value.downcase + ‘%’]
^
app/controllers/desk_controller.rb:148: syntax error, unexpected ‘,’,
expecting ‘)’
:conditions => [( ‘LOWER(fullname) LIKE
?) OR (LOWER(email) LIKE ?)’,’%’ + value.downcase + ‘%’,’%’ +
value.downcase + ‘%’]
^
app/controllers/desk_controller.rb:148: syntax error, unexpected ‘]’,
expecting ‘)’
:conditions => [( ‘LOWER(fullname) LIKE
?) OR (LOWER(email) LIKE ?)’,’%’ + value.downcase + ‘%’,’%’ +
value.downcase + ‘%’]
^
app/controllers/desk_controller.rb:149: syntax error, unexpected ‘,’,
expecting ‘)’
app/controllers/desk_controller.rb:151: syntax error, unexpected
tIDENTIFIER, expecting ‘]’
render :partial => ‘contacts’ and return

Thorsten wrote:

:conditions => [( ‘LOWER(fullname) LIKE
?) OR (LOWER(city) LIKE ?)’,’%’ + value.downcase + ‘%’,’%’ +
value.downcase + ‘%’]

that doesn’t work?


#4

That first parenthesis should probably be inside the quote.

-John

On Jun 28, 6:09 am, Robert S. removed_email_address@domain.invalid