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

17

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

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

ruby-1.9.2-p180 :001 > App.all
 => #<Mongoid::Criteria
  selector: {},
  options:  {},
  class:    App,
  embedded: false>
    
задан Newy 07.07.2011 в 08:56
источник

2 ответа

25

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

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

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

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

App.all.to_a
    
ответ дан theTRON 07.07.2011 в 10:17
источник
17

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

    
ответ дан mraaroncruz 29.08.2011 в 11:33
источник
  • он работает, но метод «записей» не отображается в его rdoc. –  Siwei Shen申思维 12.06.2012 в 06:37