web-dev-qa-db-ja.com

Mongoidのnullまたは空ではない場所を選択します

次のような新しいフィールドが含まれるようにモデルを変更しました...

field :url, :type => String

Activeadminを使用しているため、新しいエントリを作成するときに@model.urlは空であり、スキーマを変更する前に作成されたエントリではnilです。両方を選択するにはどうすればよいですか?私が試してみました:

# 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 

または、この種のシナリオのベストプラクティスがある場合はお知らせください。

77
methodofaction

試して

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

url = nil

81
a14m

試して

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

Mongoid Symbol Operators を参照してください

91
Kyle

試してください:

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