2012-07-10 17 views
12

El MongoId docs parecen ser bastante claro que yo debería ser capaz de ejecutar esto y hacer que funcione:MongoId encontrar o find_by

Band.find_by(name: "Photek") 

pero al menos con MongoId 2.4.11 esto me da una NoMethodError.

Esto, por otra parte, funciona:

Band.find(name: "Photek") 

Es bastante fácil de cambiar find_by a find, pero estoy confundido lo que está pasando. ¿Es este un caso en el que mi versión de gema está detrás de los documentos, o qué?

Respuesta

15

Los documentos Mongoid ahora muestran la versión 3 por defecto (es un RC). Que desea buscar en la documentación here para Mongoid 2.

En find vs find_by, esto es del upgrade guide para Mongoid 2 -> 3:

Model.find y ahora sólo model.relation.find tomar una o varias identificaciones. Model.first, Model.last también ya no toma argumentos. Para estos, use Model.find_by en su lugar.

IOW:

Mongoid 2:

Band.find(some_id) 
Band.find(name: "Billy Talent") 

Mongoid 3:

Band.find(some_id) 
Band.find(some_id, some_other_id) 
Band.find_by(name: "Billy Talent") 
+3

-1 para Billy Talent (lol). – user2398029