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.

Respuestas:


85

Tratar

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

Funciona incluso cuando url = nil


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


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.