Извлечение только определенных столбцов с помощью Rails 3, где - PullRequest
17 голосов
/ 11 июля 2011

Не знаю, почему я не могу понять, как это сделать легко ... Очевидно, я мог бы сделать это с помощью необработанного SQL, но я пытаюсь ознакомиться с ActiveRecord.

results = Model.where(:lat => (south..north), :lng => (east..west))

Я не хочу все поля, только несколько.Как бы я ограничил результаты только теми столбцами, которые я выбрал?

Ответы [ 3 ]

29 голосов
/ 11 июля 2011
results = Model.where(:lat => (south..north), :lng => (east..west)).select([:lat, :long, :id])

Вы также, вероятно, захотите включить :id в этот выбор, если хотите, чтобы ваши результаты вели себя как разумные ActiveRecord объекты.

Редактировать: Выбор занимает один аргумент, можетбыть массивом.

4 голосов
/ 11 июля 2011

Вам необходимо использовать select

Model.where (...). Select (...)

select accept array или raw sql string.

http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields

0 голосов
/ 25 сентября 2012

Технически, если вы хотите повторно использовать фильтр подмножества данных для моделей только для чтения, вы можете создать «представление» на уровне базы данных.Смотри http://dev.mysql.com/doc/refman/5.0/en/views.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...