Ruby on rails 如何计算关联数

Ruby on rails 如何计算关联数,ruby-on-rails,Ruby On Rails,我有以下型号 :order has_many :dishes :dish has_and_belongs_to_many :items 我有一个集合@orders,我如何计算:物品 e、 我有3种食物,鸡肉、牛肉和猪肉。还有两道菜,第一道是鸡肉和牛肉,第二道是鸡肉、牛肉和猪肉。两道菜,第一道菜包含一道菜,第二道菜包含两道菜。我想知道牛肉有三种,鸡肉有三种,猪肉有一种 我如何在rails中实现这一点?这不管用吗 @beef_orders = @orders.dishes.items.where(

我有以下型号

:order has_many :dishes
:dish has_and_belongs_to_many :items
我有一个集合@orders,我如何计算:物品

e、 我有3种食物,鸡肉、牛肉和猪肉。还有两道菜,第一道是鸡肉和牛肉,第二道是鸡肉、牛肉和猪肉。两道菜,第一道菜包含一道菜,第二道菜包含两道菜。我想知道牛肉有三种,鸡肉有三种,猪肉有一种

我如何在rails中实现这一点?

这不管用吗

@beef_orders = @orders.dishes.items.where(:ingredients => "beef").count

有趣的问题,我不知道有什么特别好的方法可以做到这一点,希望有人会发布一个,但在此期间,您可以通过迭代唯一元素和计数事件来找到计数:

items = <gather all the items into one array>
items.uniq.each do |item|
  puts item.name
  puts items.count(item)
end

谢谢你的回复。但问题是有很多项目,而不仅仅是3项。我想要像{“牛肉”=>3,“鸡肉”=>3,“猪肉”=>1,…}。目前,我正在做的是将所有关联项合并到一个数组中,然后查找每个唯一项的出现情况。寻找更好的方法。目前我正在做的是将所有相关项合并到一个数组中,然后查找每个唯一项的出现情况。寻找更好的方法。谢谢,这就是我最后做的。首先收集所有元素,然后找出唯一项的计数。
class Order < ActiveRecord::Base
  has_many :dishes
  has_many :items, through => :dishes
end

items = @orders.map(&:items).flatten