Patm
Patm

Reputation: 2075

Retrieving only certain columns with Rails 3 where clause

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

Answers (3)

Ivar
Ivar

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

Ray Baxter
Ray Baxter

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

Charles Barbier
Charles Barbier

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

Related Questions