在mongoid中选择not null或empty的位置

时间:2012-04-26 16:49:34

标签: ruby-on-rails 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 

或者,如果有这种情况的最佳做法,请告诉我。

3 个答案:

答案 0 :(得分:89)

尝试

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

请参阅Mongoid Symbol Operators

答案 1 :(得分:78)

尝试

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

即使在url = nil

时也能正常工作

答案 2 :(得分:1)

尝试:

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