Chọn nơi không rỗng hoặc trống trong mongoid


80

Tôi đã sửa đổi một mô hình để nó bao gồm một trường mới, chẳng hạn như ...

field :url, :type => String

Tôi sử dụng activeadmin, vì vậy khi tôi tạo một mục nhập mới @model.urlsẽ trống và trong các mục nhập được tạo trước khi thay đổi lược đồ, nó là con số không. Làm cách nào để chọn cả hai? Tôi đã thử:

# 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 

Hoặc, nếu có cách thực hành tốt nhất cho loại kịch bản này, vui lòng cho tôi biết.

Câu trả lời:


85

Thử

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

Nó hoạt động ngay cả khi url = nil


Tôi đồng ý, đây là câu trả lời thực sự và phải là câu trả lời được chấp nhận cho câu hỏi này.
quinn

Trong trường hợp bạn chỉ muốn kiểm tra các mục nhập trong đó trường không phải là số không:Model.where(:field.ne=>nil)
Ekkstein,


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.