2012-01-22 11 views

答えて

18

これは正しい方法です。そのエンジンnilで車を見つけるには、例えば、使用:あなたは(というnilに設定しています1以上)のフィールドの不在を探ししようとしている場合

# Cars that have a _nil_ engine. 
Car.where(:engine => nil) 

$exists述語を使用します。 nilするフィールドfooを設定し、fooという名前のフィールドを欠くこと

# Cars that lack an engine entirely. 
Car.where(:engine.exists => false) 

注2つの異なるものです。

+1

また、:engineが "[a、b、c、nil]"という形式の配列である場合、where句 ":engine => nil"はこれらの行と一致します。 –

+0

':engine'が存在するか' nil'であるかどうかにかかわらず、 '(engine:nil)'の条件は一致します。 – akostadinov

関連する問題