Rails - 如何根据条件计算平均值

时间:2013-05-18 01:03:27

标签: ruby-on-rails

我的控制器中有一个@shirts变量集,它是我控制器中特定类别的所有产品的数组(所以它是@shirts = @ category.shirts)。

然后在我看来,我希望能够根据某些条件计算出@shirts特定衬衫的平均价格。

例如,计算所有颜色为红色且尺寸较小的衬衫的平均价格。

我是rails的新手,所以我不确定我是否采取了正确的方法。现在我的观点是:

<%= @shirts.average_price("Red","Small") %>

在我的模特中:

def average_price(color, size)
    self.class.average(:price).where(color: color, size: size)
end

现在我得到了:

undefined method `average_price'

除此之外,这是最好的方法吗?显然有许多尺寸和颜色的组合,我想在表格中显示它们,计算每种组合的平均价格。什么是更干的方式呢?

现在我手动定义表格行并尝试传递大小和条件的条件。每行的颜色,但HTMl重复。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

试试这个:

def self.average_for(size, color)
  where(color: color, size: size).average(:price)
end

你会像这样使用它:

@shirts.average_for('small','red')

您的@shirts不应该是数组,而是关系:

class Category...
  has_many :products # or shirts in your case