Query for multiple possible values of a field


#1

http://geokit.rubyforge.org/readme.html

While browsing the above page, I looked at this query and wondered if it
could be changed to include multiple possible values for state:

find(:all, :origin => @somewhere, :within => 5,
:conditions=>[‘state=?’,state])

How would I tell ActiveRecord to return any records where state was ‘CA’
or ‘TX’ or ‘NY’? It seems like it’d be more efficient to go ahead and
constrain the results from the beginning…

Thanks!


#2

states = [ ‘CA’, ‘TX’, ‘LA’ ]
find(:all, :origin => @somewhere, :within => 5, :conditions=>[‘state
IN ( ? )’,states])

Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/
(en)

On Fri, Feb 20, 2009 at 4:58 PM, Naija G.


#3

Thanks a lot! What if my attribute has multiple values? For example,
if a user is associated with multiple states and the model User has an
attribute states that’s a collection of strings how would I check that
against the query you showed me? So user.states returns NY and MA, and
I’m trying to see if the given user’s states is in the applicable states
for the rule?

I need to change the query to something like

user.states in states

…but it seems like I’ll have to modify yours quite a bit more!

Maurício Linhares wrote:

states = [ ‘CA’, ‘TX’, ‘LA’ ]
find(:all, :origin => @somewhere, :within => 5, :conditions=>[‘state
IN ( ? )’,states])

Maur�cio Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/
(en)

On Fri, Feb 20, 2009 at 4:58 PM, Naija G.