选择 mongoid 中不为 null 或空的位置

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

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

或者,如果有这种情况下的最佳实践,请让我知道。

41541 次浏览

Try

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

see Mongoid Symbol Operators

Try

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

It works even when url = nil

Try:

Model.nin(url: ['', nil])