Как выбрать только определенные атрибуты из модели? - PullRequest
9 голосов
/ 06 августа 2009

Я хочу выбрать только определенные атрибуты из модели (идентификатор, имя).

SQL-команда может быть, например:

ВЫБЕРИТЕ идентификатор, имя, имя пользователя из пользователей

Вы знаете, как я могу справиться с этим?

Ответы [ 8 ]

23 голосов
/ 22 марта 2013

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

User.pluck(:id)
11 голосов
/ 06 августа 2009

Существует опция :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 голосов
/ 07 августа 2009

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

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

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

1 голос
/ 19 декабря 2016

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

Model.all.select ['id', 'title']
1 голос
/ 03 марта 2016

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

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

или

User.select(:id, :name, :username)
0 голосов
/ 01 апреля 2016

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

@user= User.select(:attributeN, :attributeN......., attributeN)
respond_to do |format|
  format.json {
    render json: @user
  }
0 голосов
/ 06 марта 2015

SQL

SELECT id,name,username FROM Users

RUBY

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

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

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

В монгоиде это будет:

User.only(:name, :username).where(id: params[:id]).first
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...