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

met*_*ion 77 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 
Run Code Online (Sandbox Code Playgroud)

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

Kyl*_*yle 92

尝试

Model.where(:url.ne => "", :url.exists => true).count
Run Code Online (Sandbox Code Playgroud)

Mongoid符号运算符


a14*_*14m 81

尝试

Model.where(:url.nin => ["", nil]).count
Run Code Online (Sandbox Code Playgroud)

它甚至可以工作 url = nil

  • 这应该被接受,甚至可以使用`url == nil`. (2认同)

p.m*_*los 7

尝试:

Model.nin(url: ['', nil])
Run Code Online (Sandbox Code Playgroud)