# Using OR in a complex condition

**URL:** <https://www.ruby-forum.com/t/using-or-in-a-complex-condition/107994>\
**Category:** Rails\
**Created:** [June 28, 2007, 6:50am UTC](https://www.ruby-forum.com/t/using-or-in-a-complex-condition/107994 "2007-06-28T06:50:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rjsquire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/74df32/32.png) [@rjsquire](https://www.ruby-forum.com/u/rjsquire)\
**Post date:** [June 28, 2007, 6:50am UTC](https://www.ruby-forum.com/t/using-or-in-a-complex-condition/107994/1 "2007-06-28T06:50:05Z")

</div>

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. 🙂 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?

---

<div class="post-metadata">

**Author:** ![rjsquire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/74df32/32.png) [@rjsquire](https://www.ruby-forum.com/u/rjsquire)\
**Post date:** [June 28, 2007, 11:53am UTC](https://www.ruby-forum.com/t/using-or-in-a-complex-condition/107994/2 "2007-06-28T11:53:58Z")

</div>

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

that doesn’t work?

---

<div class="post-metadata">

**Author:** ![rjsquire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/74df32/32.png) [@rjsquire](https://www.ruby-forum.com/u/rjsquire)\
**Post date:** [June 28, 2007, 3:09pm UTC](https://www.ruby-forum.com/t/using-or-in-a-complex-condition/107994/3 "2007-06-28T15:09:28Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![rjsquire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/74df32/32.png) [@rjsquire](https://www.ruby-forum.com/u/rjsquire)\
**Post date:** [June 28, 2007, 5:17pm UTC](https://www.ruby-forum.com/t/using-or-in-a-complex-condition/107994/4 "2007-06-28T17:17:48Z")

</div>

That first parenthesis should probably be inside the quote.

-John

On Jun 28, 6:09 am, Robert S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
