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


80

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

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 

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

回答:


85

試してみてください

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

でも動作します url = nil


私は同意します、これは本当の答えであり、この質問に対する受け入れられた答えであるべきです。
クイン2016年

フィールドがnilでないエントリをチェックしたいだけの場合:Model.where(:field.ne=>nil)
Ekkstein 2016年


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.