Seleccione donde no es nulo o vacío en mongoide

80

Modifiqué un modelo para que incluya un nuevo campo, como ...

field :url, :type => String

Yo uso activeadmin, así que cuando creo una nueva entrada @model.urlestá vacía, y en las entradas creadas antes de cambiar el esquema es nula. ¿Cómo selecciono ambos? Yo he tratado:

# 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 existe una práctica recomendada para este tipo de escenario, hágamelo saber.

metodofaccion
fuente

Respuestas:

85

Tratar

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

Funciona incluso cuando url = nil

a14m
fuente
Estoy de acuerdo, esta es la respuesta real y debería ser la respuesta aceptada a esta pregunta.
Quinn
En caso de que solo desee verificar las entradas donde un campo no es nulo:Model.where(:field.ne=>nil)
Ekkstein
5

Tratar:

Model.nin(url: ['', nil])
p.matsinopoulos
fuente