2009-08-06 5 views

ответ

10

Есть опция :select при поиске методов. Это позволяет сделать:

User.find(:all, :select => 'id, name, username') 

Возвращаемые объекты будут User экземпляры с этими атрибутами доступны.

Или если вы действительно хотите только значения без их обертывания нами как User экземпляров. Вы можете добавить метод к User, чтобы вернуть их.

def self.get_ids_and_names 
    self.connection.select_all("select id, name, username from users") 
end 

, который вернет массив имен столбцов хешей, чтобы значение для этой строки. Например. [{'id' => 1, 'name' => 'user1', 'username' => 'username1'}, ... ]

+3

В Rails 3: ' User.select («id, name, username») ' –

3

Вы также можете сделать

User.find(:all).map(&:id) 

, чтобы получить список идентификаторов пользователей, если вы пытаетесь получить список идентификаторов или имен

+0

Я некоторое время искал это для поиска. Благодаря! – Ashitaka

+3

Я не рекомендую это так. Очень медленно –

+0

Это ответ, но он довольно медленный. 'Пользователь.find (: all) 'возвращает полный набор объектов ActiveRecord для каждого элемента. затем с ruby ​​он сопоставляет эти объекты и возвращает только идентификаторы. У вас еще есть коллекция, ожидающая сбора мусора. надеюсь, что ваши идентификаторы не используются для других интенсивных действий с памятью. 'User.pluck' и' User.select' более эффективны –

0

В Mongoid пользователя, который был бы:

User.only(:name, :username).where(id: params[:id]).first 
23

Довольно старый вопрос, но рельсы 3 путь будет:

User.pluck(:id) 
0

SQL

SELECT id,name,username FROM Users

RUBY

User.select(:id, :name, :username)

с условием, вы можете написать как: User.select(:id, :name, :username).find_by(:age 22)

1

Мы можем использовать select для symbol или string, такие как:

User.select("id, name, username") 

или

User.select(:id, :name, :username) 
0

на самом деле вам нужно только написать этот

@user= User.select(:attributeN, :attributeN......., attributeN) 
respond_to do |format| 
    format.json { 
    render json: @user 
    } 
0

Вы также можете передать в массив, например, так:

Model.all.select ['id', 'title'] 
Смежные вопросы