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ć.

Odpowiedzi:


85

Próbować

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

Działa nawet wtedy, gdy url = nil


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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.