2014-01-04 3 views
0

В моих рельсах приложении мне нужно найти все, где:Rails: выберите массив на основе атрибута

balance != nil or 0 
pause != true 

Я попытался это, но он не работает

@foo = Product.all 
@foo = @foo.where("pause != ?", true) 
@foo = @foo.where("balance != ?", 0) 
@foo = @foo.where("balance != ?", nil) 
+0

Когда вы говорите, что это не работает, что вы получаете? Ошибка или неожиданный выход? –

+0

Я получаю пустой объект –

ответ

2

Я считаю, что вы в конечном итоге с неявным AND между всеми условиями. Как о чем-то вроде

@foo = Product.where("pause!=? AND (balance !=? OR balance is not null)", true, 0) 

правка: обновляется, чтобы проверить is not null вместо сравнения с null. Обратитесь к интерфейсу запросов Active Record here

+0

Спасибо! оно работает. –

+0

'balance! = NULL' не работает так хорошо в SQL ... –

+0

@muistooshort - не понимал этого. Что бы вы порекомендовали для нулевых проверок? –

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