Wählen Sie, wo im Mongoid nicht null oder leer ist


80

Ich habe ein Modell so geändert, dass es ein neues Feld enthält, z.

field :url, :type => String

Ich verwende activeadmin. Wenn ich also einen neuen Eintrag erstelle, @model.urlist dieser leer und in Einträgen, die vor dem Ändern des Schemas erstellt wurden, ist er gleich Null. Wie wähle ich beide aus? Ich habe versucht:

# 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 

Wenn es für diese Art von Szenario eine bewährte Methode gibt, lassen Sie es mich bitte wissen.

Antworten:


84

Versuchen

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

Es funktioniert auch wenn url = nil


Ich stimme zu, dies ist die wahre Antwort und sollte die akzeptierte Antwort auf diese Frage sein.
Quinn

Für den Fall, dass Sie nur nach Einträgen Model.where(:field.ne=>nil)
suchen


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.