Chcę wybrać tylko określone atrybuty z modelu (id, nazwa).Jak wybrać tylko określone atrybuty z modelu?
SQL-polecenia mogą być na przykład:
SELECT id, nazwa, nazwa użytkownika od użytkowników
Czy wiesz, jak mogę sobie z tym poradzić?
Chcę wybrać tylko określone atrybuty z modelu (id, nazwa).Jak wybrać tylko określone atrybuty z modelu?
SQL-polecenia mogą być na przykład:
SELECT id, nazwa, nazwa użytkownika od użytkowników
Czy wiesz, jak mogę sobie z tym poradzić?
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'}, ... ]
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
Przez jakiś czas googlowałem. Dzięki! – Ashitaka
Nie polecam tego w ten sposób. Bardzo powolny –
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 –
W mongoid użytkownika, który będzie:
User.only(:name, :username).where(id: params[:id]).first
Dość stare pytanie, ale szyny 3 sposobem byłoby:
User.pluck(:id)
SELECT id,name,username FROM Users
User.select(:id, :name, :username)
warunku, można napisać tak: User.select(:id, :name, :username).find_by(:age 22)
Możemy użyć select
dla symbol
lub string
takich jak:
User.select("id, name, username")
lub
User.select(:id, :name, :username)
rzeczywiście dla ciebie tylko trzeba napisać to
@user= User.select(:attributeN, :attributeN......., attributeN)
respond_to do |format|
format.json {
render json: @user
}
Można także przekazać w tablicy, tak jak poniżej:
Model.all.select ['id', 'title']
W Rails 3: ' User.select ("id, name, username") ' –