2016-10-28 2 views
0

У меня есть модель User с атрибутом Address. Я хочу запустить запрос, который включает пользователей с адресами nil.Как найти нулевые результаты с помощью Rails SQL-запроса

Следующий запрос:

User.where(address: nil) 

возвращает правильный результат 2. Но это одно:

User.where('address = ? AND address = ?', nil, nil) 

возвращает 0.

там что-то не так с моим синтаксисом в секунду запрос?

Вот SQL-запрос фактически работает в моем сервере:

SELECT COUNT (*) FROM "users" WHERE (address = NULL AND address = NILL) 

Я подозреваю, что он должен сказать «адрес IS NULL» не «адрес = NULL»

+0

ли вы имеете в виду 'WHERE IS адрес NULL'? – Siyual

+0

@Siyual Точно. –

+0

Оба должны корректно работать с рельсами 3. Можете ли вы показать mysql, сгенерированный вторым? –

ответ

1

Вот синтаксис, что вы ищете:

User.where('address IS ? AND address IS ?', nil, nil) 
+0

А там мы идем, спасибо! –

1

по умолчанию в AR является AND поэтому

User.where(address: nil).where(address: nil) 

сгенерирует правильный запрос.

+0

снова не уверен в повторном состоянии, предполагая, что вы предназначенный для поиска другого столбца nil/null. Это становится немного сложнее, если вам нужно «или» столбцы. но это может быть сделано в AR, а также – Doon

Смежные вопросы