Wybierz, gdzie nie jest puste lub puste w mongoid

80

Zmodyfikowałem model, aby zawierał nowe pole, takie jak ...

field :url, :type => String

Używam activeadmin, więc kiedy tworzę nowy wpis @model.urljest pusty, aw wpisach utworzonych przed zmianą schematu jest zerowy. Jak wybrać oba? Próbowałem:

# 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 

Lub, jeśli istnieje najlepsza praktyka w tego rodzaju scenariuszu, daj mi znać.

metoda działania
źródło

Odpowiedzi:

85

Próbować

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

Działa nawet wtedy, gdy url = nil

a14m
źródło
Zgadzam się, to jest prawdziwa odpowiedź i powinna być akceptowaną odpowiedzią na to pytanie.
quinn
Jeśli chcesz tylko sprawdzić wpisy, w których pole nie jest zerowe:Model.where(:field.ne=>nil)
Ekkstein
5

Próbować:

Model.nin(url: ['', nil])
p.matsinopoulos
źródło