Возвращаем массив идентификаторов - PullRequest
23 голосов
/ 11 ноября 2010

Привет Как я могу вернуть массив из вызова базы данных.

в этом формате: ["141", "138", "123", "128", "137", "139"]

Ответы [ 4 ]

71 голосов
/ 11 ноября 2010

В Rails 4: (ht @ ri4a )

User.ids # integer array
User.ids.map(&:to_s) # string array

В рельсах 3/4:

User.pluck(:id) # integer array
User.pluck(:id).map(&:to_s) # string array

Старый ответ

Если вы хотите перейти непосредственно к БД:

> ActiveRecord::Base.connection.select_values("select id from users")
["1", "2", "5", "6", "7", "8", "3", "10", "11", "9"]

Если у вас уже есть модель:

User.all(:select => :id).collect(&:id)

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

16 голосов
/ 11 ноября 2010

Если у вас есть has_many, то на стороне has_many вы можете получить идентификаторы для связанных объектов, например:

def User
  has_many :tasks
end

def Task
  belongs_to :user
end

ids = User.find(1).task_ids
6 голосов
/ 11 ноября 2010

Как насчет:

ClassName.all.collect { |obj| obj.id }
3 голосов
/ 29 декабря 2012

Если вы используете модель, есть новый метод - общипывание.Comment.pluck (: id) # [1,2,3 ...]

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