Получение фактического массива результатов с помощью Mongoid
При обычной установке ActiveRecord/SQL в Rails в консоли, когда я выполняю команды *.where
, *.all
и т.д., я возвращаю фактический массив элементов записи. Однако, перейдя на Mongoid, я вместо этого вернусь к критериям. Как получить фактические результаты?
Вот что я теперь получаю...
ruby-1.9.2-p180 :001 > App.all
=> #<Mongoid::Criteria
selector: {},
options: {},
class: App,
embedded: false>
Ответы
Ответ 1
Когда вы запрашиваете модель в Mongoid, она возвращает объект-критерий (как вы сказали), он фактически не запускает запрос до тех пор, пока вы не запросите данные из критериев.
Все, что вам нужно сделать, это перебрать результаты, используя each
или map
или любой из методов массива, например:
App.all.each do |app|
puts app.name
end
В качестве альтернативы, если вы просто хотите массив, вы можете просто вызвать to_a
по критериям:
App.all.to_a
Ответ 2
App.all.entries
работает.