Получение фактического массива результатов с использованием Mongoid - PullRequest
17 голосов
/ 07 июля 2011

При обычной установке ActiveRecord / SQL в Rails, в консоли, когда я выполняю команды *.where, *.all и т. Д., Я получаю реальный массив элементов записи.Однако, после перехода на Mongoid, я вместо этого получаю критерии.Как я могу получить фактические результаты?

Это то, что я получаю сейчас ...

ruby-1.9.2-p180 :001 > App.all
 => #<Mongoid::Criteria
  selector: {},
  options:  {},
  class:    App,
  embedded: false>

Ответы [ 2 ]

25 голосов
/ 07 июля 2011

Когда вы запрашиваете модель в Mongoid, она возвращает объект критерия (как вы заявили), но фактически не выполняет запрос, пока вы не запросите данные из критериев.

Все, что вам нужно сделать, это перебрать результаты, используя each или map или любой из методов массива, например:

App.all.each do |app|
  puts app.name
end

В качестве альтернативы, если вы просто хотите получить массив, вы можете просто вызвать to_a по критериям:

App.all.to_a
17 голосов
/ 29 августа 2011

App.all.entries тоже работает.

...