# How can I write this find with AR?

**URL:** <https://www.ruby-forum.com/t/how-can-i-write-this-find-with-ar/86336>\
**Category:** Rails\
**Created:** [February 21, 2007, 4:07pm UTC](https://www.ruby-forum.com/t/how-can-i-write-this-find-with-ar/86336 "2007-02-21T16:07:59Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![dfg59](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e0b2c6/32.png) [@dfg59](https://www.ruby-forum.com/u/dfg59)\
**Post date:** [February 21, 2007, 4:07pm UTC](https://www.ruby-forum.com/t/how-can-i-write-this-find-with-ar/86336/1 "2007-02-21T16:07:59Z")

</div>

All -

I have an array of values arr = [‘a’,‘b’,‘c’] and I want to find all  
records such that :value is contained within the array. Something like:

Record.find(:all,:conditions=\>{:value=\>arr.include?})

Does AR support this, and if so what is the syntax?

Thanks,  
Drew

---

<div class="post-metadata">

**Author:** ![dfg59](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e0b2c6/32.png) [@dfg59](https://www.ruby-forum.com/u/dfg59)\
**Post date:** [February 21, 2007, 4:11pm UTC](https://www.ruby-forum.com/t/how-can-i-write-this-find-with-ar/86336/2 "2007-02-21T16:11:55Z")

</div>

Drew O. wrote:

> All -
> 
> I have an array of values arr = [‘a’,‘b’,‘c’] and I want to find all  
> records such that :value is contained within the array. Something like:
> 
> Record.find(:all,:conditions=\>{:value=\>arr.include?})
> 
> Does AR support this, and if so what is the syntax?
> 
> Thanks,  
> Drew

I’m out of office so cant really test but you could probably do  
something along the lines of:  
Record.find(:all,:conditions=\>{ “value IN (?), arr.join(”,") })

---

<div class="post-metadata">

**Author:** ![dfg59](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e0b2c6/32.png) [@dfg59](https://www.ruby-forum.com/u/dfg59)\
**Post date:** [February 21, 2007, 4:30pm UTC](https://www.ruby-forum.com/t/how-can-i-write-this-find-with-ar/86336/3 "2007-02-21T16:30:43Z")

</div>

Ben wrote:

> I’m out of office so cant really test but you could probably do  
> something along the lines of:  
> Record.find(:all,:conditions=\>{ “value IN (?), arr.join(”,") })

Thanks for putting me on the right track. It seems I can do:

Record.find(:all,:conditions=\>[“value IN (?)”, arr])

---

<div class="post-metadata">

**Author:** ![dfg59](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e0b2c6/32.png) [@dfg59](https://www.ruby-forum.com/u/dfg59)\
**Post date:** [February 21, 2007, 4:57pm UTC](https://www.ruby-forum.com/t/how-can-i-write-this-find-with-ar/86336/4 "2007-02-21T16:57:58Z")

</div>

you can also do

Model.find\_all\_by\_value([‘a’, ‘b’, ‘c’])

ex:

authors = [‘Hemingway’, ‘Dickinson’, ‘Shakespeare’]  
Books.find\_all\_by\_author(authors)

where ‘author’ is a column in the ‘books’ table

---

<div class="post-metadata">

**Author:** ![dfg59](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e0b2c6/32.png) [@dfg59](https://www.ruby-forum.com/u/dfg59)\
**Post date:** [February 21, 2007, 11:24pm UTC](https://www.ruby-forum.com/t/how-can-i-write-this-find-with-ar/86336/5 "2007-02-21T23:24:58Z")

</div>

You can simply do  
Record.find(:all, :conditions =\> {:value =\> arr})

Simon

---

<div class="post-metadata">

**Author:** ![dfg59](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e0b2c6/32.png) [@dfg59](https://www.ruby-forum.com/u/dfg59)\
**Post date:** [February 22, 2007, 12:18am UTC](https://www.ruby-forum.com/t/how-can-i-write-this-find-with-ar/86336/6 "2007-02-22T00:18:41Z")

</div>

On Feb 21, 2007, at 16:07 , Drew O. wrote:

> I have an array of values arr = [‘a’,‘b’,‘c’] and I want to find all  
> records such that :value is contained within the array. Something  
> like:
> 
> Record.find(:all,:conditions=\>{:value=\>arr.include?})
> 
> Does AR support this, and if so what is the syntax?

Does :conditions =\> [‘value IN (?)’, arr] do what you need?

–  
Jakob S. - [http://mentalized.net](http://mentalized.net)

---

<div class="post-metadata">

**Author:** ![dfg59](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e0b2c6/32.png) [@dfg59](https://www.ruby-forum.com/u/dfg59)\
**Post date:** [February 21, 2007, 5:47pm UTC](https://www.ruby-forum.com/t/how-can-i-write-this-find-with-ar/86336/7 "2007-02-21T17:47:48Z")

</div>

Chris H. wrote:

> you can also do
> 
> Model.find\_all\_by\_value([‘a’, ‘b’, ‘c’])

Wow, much cleaner. Thanks for that!

-Drew
