web-dev-qa-db-fra.com

Sélectionnez où non nul ou vide dans mongoid

J'ai modifié un modèle pour qu'il inclue un nouveau champ, comme ...

field :url, :type => String

J'utilise activeadmin, donc quand je crée une nouvelle entrée @model.url est vide et dans les entrées créées avant de modifier le schéma, il est nul. Comment sélectionner les deux? J'ai essayé:

# 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 

Ou, s'il existe une meilleure pratique pour ce type de scénario, veuillez me le faire savoir.

77
methodofaction

Essayer

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

Cela fonctionne même lorsque url = nil

81
a14m

Essayer

Model.where(:url.ne => "", :url.exists => true).count

voir Opérateurs de symboles mongoïdes

91
Kyle

Essayer:

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