Подтвердить что ты не робот

Получение фактического массива результатов с помощью Mongoid

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

Вот что я теперь получаю...

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

Ответ 1

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

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

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

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

App.all.to_a

Ответ 2

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