как вернуть количество столбцов, которые не равны нулю в рельсах

Я пытаюсь подсчитать количество товаров в заказе, взяв строку заказа и подсчитав поля, которые не равны нулю, и возвращая это количество как количество товаров в корзине.

например, для заказа у меня есть несколько столбцов, в которых хранится идентификатор определенного элемента. поэтому, если в этом столбце есть элемент, в нем будет храниться идентификатор продукта. если нет, то он будет нулевым.

общее количество полей в строке, которые не равны нулю, будет общим количеством товаров в корзине для этого заказа.

есть ли простой способ использовать функцию подсчета в рельсах для этого?


person Andrew    schedule 01.07.2011    source источник


Ответы (2)


Было бы полезно, если бы вы включили свои классы модели и схему, но вот попытка подсчета количества элементов с заданным идентификатором заказа:

item_count = OrderItem.where(:order_id => order.id).count
person Spike Gronim    schedule 01.07.2011
comment
спасибо, но я пытаюсь сосчитать по столбцам для строки. я обновил свой вопрос, чтобы быть менее расплывчатым. - person Andrew; 02.07.2011

Метод count в ActiveRecord позволяет передать параметр :conditions.

item_count = OrderItem.count(:conditions => "some_column IS NOT NULL")
person basicxman    schedule 01.07.2011
comment
Mysql2::Error: у вас есть ошибка в синтаксисе SQL; - person Frank Fang; 29.08.2016