2015-07-06 2 views
1
# == Schema Information 
# 
# Table name: orders 
# 
# id    :integer   not null, primary key 
# order_name   :string(255) 
# payment_mode  :string(255) 
# total_cost  :integer   default(0) 
# user_id   :integer 
# created_at  :datetime 
# updated_at  :datetime 
# 

class Order < ActiveRecord::Base 
    has_many :order_items, dependent: :destroy 
    belongs_to :user 
end 

# == Schema Information 
# 
# Table name: order_items 
# 
# id   :integer   not null, primary key 
# order_id :integer 
# product_id :integer 
# quantity :integer 
# total_price :integer   default(0) 
# created_at :datetime 
# updated_at :datetime 
# 

class OrderItem < ActiveRecord::Base 
    belongs_to :order 
end 

Мой ожидаемый результат должен быть как имя заказа, total_cost с количеством товаров по каждому заказу.has_many ассоциация со значениями счета

Как достичь этого, используя активную запись.

Я попытался следующие

Order.select("orders.*,count(order_items.product_id) as product_count").joins(:order_items) 
+1

Каков результат вашего запроса? – Pavan

+0

=> # ]> –

+0

Вы просматривали использование счетчика в таблице Orders? http://guides.rubyonrails.org/association_basics.html#counter-cache – mysmallidea

ответ

0

Попробуйте следующий запрос дает результат в виде хэша, и вы можете добиться ожидаемого результата. просто подтвердите свои отношения и имена таблиц

OrderItem.joins(:order).select("orders.order_name as order_name,orders.total_cost as total_cost, count(*) as product_count").group(:order_id).as_json 
Смежные вопросы