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

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

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

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

2 ответа

Решение

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

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

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

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

App.all.to_a

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

Другие вопросы по тегам