2012-04-26 23 views
66

he modificado un modelo por lo que incluye un nuevo campo, tales como ...Seleccionar donde no es nulo o vacío en MongoId

field :url, :type => String

utilizo activeadmin, por lo que cuando se crea una nueva entrada @model.url está vacía , y en las entradas creadas antes de cambiar el esquema es nulo. ¿Cómo selecciono ambos? Lo he intentado:

# Returns nils and strings 
Model.where(:url.ne => "").count 

# Returns strings and "" 
Model.where(:url.ne => nil).count 

# Returns strings, nils and "" 
Model.where(:url.ne => ["", nil]).count 

O, si hay una mejor práctica para este tipo de escenario, por favor hágamelo saber.

Respuesta

64

Trate

Model.where(:url.nin => ["", nil]).count 

funciona incluso con las url = nil

+2

Esto debe ser aceptado, funciona incluso con 'url == nil'. –

+0

Acepto, esta es la respuesta real y debería ser la respuesta aceptada a esta pregunta. – quinn

+0

En caso de que solo desee comprobar las entradas donde un campo no es nulo: 'Model.where (: field.ne => nil)' – Ekkstein

Cuestiones relacionadas