Я хотел бы суммировать общее количество по категориям.Rails: Как суммировать и отображать общее количество по категориям
Как я могу рассчитать и отобразить их?
Отображаемое изображение выглядит следующим образом; (пункт А и С той же категории)
order A
shop A
name: item A
category: 1
quantity: 2
name: item B
category: 2
quantity: 3
name: item C
category: 1
quantity: 4
<Total> # I'd like to know how to calculate and display
category 1: 6
category 2: 3
Так будет понятно, если вы могли бы дать мне совет.
модели
class Order < ActiveRecord::Base
has_many :shops
end
class Shop < ActiveRecord::Base
belongs_to :order
has_many :items
end
class Item < ActiveRecord::Base
belongs_to :shop
has_one :order, autosave: false, through: :shop
end
schema.rb
ActiveRecord::Schema.define(version: 20160610051929) do
create_table "items", force: :cascade do |t|
t.string "name"
t.integer "category"
t.integer "quantity"
t.integer "shop_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "orders", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "shops", force: :cascade do |t|
t.string "name"
t.integer "order_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
orders_controller.rb
class OrdersController < ApplicationController
def show
@orders = Order.find(params[:id])
end
end
вид/заказы/show.html.erb
<%= render @orders %>
вид/заказы/_order.html.erb
<%= order.name %><br>
<% order.shops.each do |shop| %>
<%= shop.name %><br>
<% shop.items.each do |item| %>
name: <%= item.name %><br>
category: <%= item.category %><br>
quantity: <%= item.quantity %><br>
<br>
<% end %>
<% end %>
Было бы понятно, если бы вы могли дать мне, как рассчитать и дисплей в итоге.
Вы можете использовать SQL, подобный http://stackoverflow.com/questions/17957723/ruby-on-rails-query-with-sum-and-group –
Пробовали ли вы группу и сумму для этого? –
Как правило, эти суммы доступны с 'Item.where (категория: 1) .sum (: quantity)', но вы должны думать об одном запросе, чтобы получить все суммы, чтобы избежать множественных вызовов SQL. –