Reputation: 2075
Not sure why I can't find out how to do this easily... Obviously I could do it with raw SQL, but I'm trying to familiarize myself with ActiveRecord.
results = Model.where(:lat => (south..north), :lng => (east..west))
I don't want all the fields, just a few. How would I limit the results to only include columns I choose?
Upvotes: 18
Views: 21667
Reputation: 5712
Technically, if you want to reuse the data subset filter for readonly models, you can create a 'view' at the database level. See http://dev.mysql.com/doc/refman/5.0/en/views.html
Upvotes: 0
Reputation: 3200
results = Model.where(:lat => (south..north), :lng => (east..west)).select([:lat, :long, :id])
You'll also probably want to include the :id
in that select if you want your results to behave like reasonable ActiveRecord
objects.
Edit: Select takes a single arg, can be an array.
Upvotes: 32
Reputation: 845
You need to use select
Model.where(...).select(...)
select accept array or raw sql string.
http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields
Upvotes: 4