2009-08-06 13 views

Odpowiedz

10

Dostępna jest metoda . Pozwala to zrobić:

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

Zwracany obiekty będą User przypadki z tych atrybutów dostępnych.

Lub jeśli naprawdę chcesz tylko wartości bez pakowania ich nas jako instancji User. Możesz dodać metodę do User, aby je zwrócić.

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

który zwróci tablicę skrótów mapujących nazwę kolumny do wartości dla tego wiersza. Na przykład. [{'id' => 1, 'name' => 'user1', 'username' => 'username1'}, ... ]

+3

W Rails 3: ' User.select ("id, name, username") ' –

3

Można również zrobić

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

uzyskać listę identyfikatorów użytkowników, jeśli starają się uzyskać listę identyfikatorów lub nazw

+0

Przez jakiś czas googlowałem. Dzięki! – Ashitaka

+3

Nie polecam tego w ten sposób. Bardzo powolny –

+0

To jest odpowiedź, ale jest dość powolna. 'Użytkownik.find (: all) 'zwraca kompletny zbiór obiektów ActiveRecord dla każdego elementu. następnie za pomocą ruby ​​mapuje te obiekty i zwraca tylko identyfikatory. Nadal masz tę kolekcję czekającą na śmieci. mam nadzieję, że twoje identyfikatory nie są używane do innych intensywnych działań pamięciowych. 'User.pluck' i' User.select' są bardziej wydajne –

0

W mongoid użytkownika, który będzie:

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

Dość stare pytanie, ale szyny 3 sposobem byłoby:

User.pluck(:id) 
0

SQL

SELECT id,name,username FROM Users

RUBY

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

warunku, można napisać tak: User.select(:id, :name, :username).find_by(:age 22)

1

Możemy użyć select dla symbol lub string takich jak:

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

lub

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

rzeczywiście dla ciebie tylko trzeba napisać to

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

Można także przekazać w tablicy, tak jak poniżej:

Model.all.select ['id', 'title'] 
Powiązane problemy