2011-01-26 15 views
32

He creado una aplicación MongoId rails3 + y cuando abro la consola rieles, ninguno de los buscadores parecen funcionar - http://d.pr/FNzC¿Los localizadores Mongoid no funcionan?

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

tanto la rentabilidad:

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

¿Estoy haciendo algo mal ?

Respuesta

58

bien, así que esto es parte de lo que hace irritante MongoId para los recién llegados. La gente espera que métodos como User.all realmente devuelvan una matriz cuando realmente solo devuelve el objeto Criteria.

Con el fin de proporcionar el azúcar sintético de métodos encadenables y otros mecanismos de consulta sofisticados, Mongoid parece utilizar una cosa de tipo de carga perezosa.

Usted puede hacer:

#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 

Esto hace que sea difícil verificar rápidamente que las cosas están funcionando para los recién llegados de ActiveRecord donde User.all sólo devuelve una matriz.

+2

Definitivamente. Aunque tienen documentación, no parece sugerir que los punteros en realidad hayan creado objetos de criterio sobre los que deba iterar. Como dijiste, un poco irritante para los recién llegados que usaban las clases AR. – Hutch

+0

¿Qué sucede si obtiene un error de conexión al usar '.to_a'? – Gcap

1

Prueba esto:

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

Eso no funciona para MongoID. –

+0

User.where doesnt work for mongoid – harshit

Cuestiones relacionadas