2012-04-26 2 views
66

ho modificato un modello in modo che include un nuovo campo, come ad esempio ...Scegliere dove non nullo o vuoto in mongoid

field :url, :type => String

io uso activeadmin, in modo che quando creo una nuova voce @model.url è vuoto e nelle voci create prima di modificare lo schema è nullo. Come seleziono entrambi? Ho provato:

# 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 

Oppure, se c'è una best practice per questo tipo di scenario per favore fatemelo sapere.

risposta

64

Prova

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

Funziona anche quando url = nil

+2

Questo dovrebbe essere accettato, funziona anche con 'url == nil'. –

+0

Sono d'accordo, questa è la vera risposta e dovrebbe essere la risposta accettata a questa domanda. – quinn

+0

Nel caso in cui si desidera verificare le voci in cui un campo non è nullo: 'Model.where (: field.ne => nil)' – Ekkstein