85

我修改了一个模型,使其包含一个新字段,例如...

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 

或者,如果这种情况有最佳实践,请告诉我。

4

3 回答 3

96

Try

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

see Mongoid Symbol Operators

于 2012-04-26T18:36:35.333 回答
88

尝试

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

即使在url = nil

于 2013-11-28T22:08:36.380 回答
7

尝试:

Model.nin(url: ['', nil])
于 2018-04-13T14:28:41.360 回答