Получение фактического массива результатов с использованием 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