2012-04-26 58 views
66

我修改的模型,因此它包括一個新的領域,如...選取不爲空或空的mongoid

field :url, :type => String

我用activeadmin,所以當我創建一個新條目@model.url是空的,並且在更改模式之前創建的條目中爲零。我如何選擇兩者?我曾嘗試:

# 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 

或者,如果有這類情況的,請讓我知道最好的做法。

回答

64

嘗試

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

它的工作原理,即使url = nil

+2

這應該被接受,即使使用'url == nil'也能工作。 – 2015-05-04 19:55:14

+0

我同意,這是真正的答案,應該是這個問題的接受答案。 – quinn 2016-05-23 23:51:01

+0

如果您只想檢查字段不爲零的條目:'Model.where(:field.ne => nil)' – Ekkstein 2016-11-16 00:01:12

86

嘗試

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

看到Mongoid Symbol Operators

+0

作品!非常感謝。 – Duopixel 2012-04-26 18:41:00

+5

如果'url'爲'nil'則不起作用。 – 2015-05-04 19:49:32