85

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

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 

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

4

3 に答える 3

96

試す

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

Mongoidシンボル演算子を参照してください

于 2012-04-26T18:36:35.333 に答える
88

試す

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

でも動作しますurl = nil

于 2013-11-28T22:08:36.380 に答える
7

試す:

Model.nin(url: ['', nil])
于 2018-04-13T14:28:41.360 に答える