2015-04-17 2 views
0

Мои модели, как это:Rails дополнительные столбцы в group_by запросе

Product belongs_to Category 
Product belongs_to OrderItem 

Я хочу, чтобы выбрать общую стоимость проданной продукции в определенный день, сгруппированных по Categorylike это:

@items = OrderItem.joins(:product => [:category]).where('order_items.sale_date = ?', 1.day.ago.strftime('%Y-%m-%d')).group(:'categories.name').sum(:total_value) 

запросе отлично работает, возвращая массив с именем категории и общим значением.

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

Благодаря

+0

Попробуйте 'группу (» category.name ',' categories.id ') ' –

+0

Столбец теперь есть, но я не могу получить к нему доступ в представлении с' item.id' –

+0

После этого запроса '@ items' должен содержать' Ha sh', где каждый ключ представляет собой массив '[category_name, category_id]', а значение - это 'sum'. –

ответ

1

Попробуйте сделать следующее, чтобы получить массив категорий и соответствующих сумм:

@items = OrderItem.joins(:product => [:category]).where('order_items.sale_date = ?', 
1.day.ago.strftime('%Y-%m-%d')).group('categories.id'). 
sum(:total_value).map {|k, v| {category: Category.find(k), total_value: v}} 

Теперь в окне вы можете использовать что-то вроде:

<% @items.each do |item| %> 
<p><%= item[:category].name %> - <%= item[:total_value] %></p> 
<% end; %> 
Смежные вопросы