2012-01-22 4 views

ответ

18

Это правильный способ сделать это. Для того, чтобы найти автомобили которых двигатель nil, к примеру, использовать:

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

Если вы пытаетесь искать отсутствие поля (а не тот, который установлен в nil), используйте $exists предикат:

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

Обратите внимание, что установка поля foo быть nil и отсутствует поле с именем foo две разные вещи.

+1

Также обратите внимание, что если: engine является массивом формы «[a, b, c, nil]», то ваше предложение where:: engine => nil »будет соответствовать этим строкам. –

+0

Для меня существует ли ': engine' или' nil', условие 'where (engine: nil)' соответствует. – akostadinov