數我有以下型號怎麼算協會
:order has_many :dishes
:dish has_and_belongs_to_many :items
我有一個集合@orders,我怎麼算的:項目嗎?
例如我有3個項目,雞肉,牛肉和豬肉。兩道菜,首先是雞肉和牛肉,其次是雞肉,牛肉和豬肉。兩個訂單,第一個訂單包含菜#1,第二個訂單包含兩個菜。我想知道有3個牛肉,3個雞肉和1個豬肉。
如何在rails中實現這一目標?
數我有以下型號怎麼算協會
:order has_many :dishes
:dish has_and_belongs_to_many :items
我有一個集合@orders,我怎麼算的:項目嗎?
例如我有3個項目,雞肉,牛肉和豬肉。兩道菜,首先是雞肉和牛肉,其次是雞肉,牛肉和豬肉。兩個訂單,第一個訂單包含菜#1,第二個訂單包含兩個菜。我想知道有3個牛肉,3個雞肉和1個豬肉。
如何在rails中實現這一目標?
有趣的問題,我不知道這樣做的任何特別好的辦法,希望有人將發佈一個,但在此期間,您可以通過獨特的元素和迭代計算的出現找到數:
items = <gather all the items into one array>
items.uniq.each do |item|
puts item.name
puts items.count(item)
end
收集所有子項到一個數組,如果你有一個:has_many through
關係這將是最好的,所以你可以直接得到一個訂單項,跳過菜:
class Order < ActiveRecord::Base
has_many :dishes
has_many :items, through => :dishes
end
items = @orders.map(&:items).flatten
謝謝,這是我最終做的。首先收集所有元素,然後找出唯一項目的數量。 – user1495133
這不工作?
@beef_orders = @orders.dishes.items.where(:ingredients => "beef").count
感謝您的回覆。但問題是,有很多項目,不僅僅是3.我想要的東西像{「牛肉」=> 3,「雞肉」=> 3,「豬肉」=> 1,...}。目前我正在做的是將所有關聯的項目合併到一個數組中,然後查找每個唯一項目的發生。尋找更好的方法。 – user1495133
目前我正在做的是將所有關聯的項目合併到一個數組中,然後查找每個唯一項目的發生。尋找更好的方法。 – user1495133