Монгоидные искатели не работают? - PullRequest
32 голосов
/ 26 января 2011

Я установил приложение rails3 + mongoid, и когда я открываю консоль rails, кажется, что ни один из искателей не работает - http://d.pr/FNzC

User.all
User.find(:all, :conditions => { first_name => "John" })

оба возвращаются:

#<Mongoid::Criteria
  selector: {},
  options:  {}>

Я что-то не так делаю?

Ответы [ 2 ]

58 голосов
/ 26 января 2011

Хорошо, так что это часть того, что делает mongoid раздражающим для новичков.Люди ожидают, что такие методы, как User.all, на самом деле будут возвращать массив, когда он на самом деле просто возвращает объект Criteria.

Чтобы обеспечить синтетический сахар цепных методов и других причудливых механизмов запросов, Mongoid, похоже, использует отложенную загрузкуТип вещь.

Вы можете сделать:

#array index
User.all[0]

#first/last
User.all.first

#each over things, print out all the users
User.all.each {|u| p u}

#edit, I forgot to include this, which is probably what you really want
#this spits out an array
User.all.to_a

Это затрудняет быструю проверку работоспособности новичков из ActiveRecord, где User.all просто возвращает массив.

1 голос
/ 26 января 2011

Попробуйте это:

    User.all.first        
    User.find(:first, :conditions => {:first_name => 'John'})    
    User.where(:first_name => 'John').first
...