创建范围以显示具有特定属性的所有项目的平均值以上的项目

时间:2014-09-02 11:01:23

标签: ruby-on-rails ruby-on-rails-4

我有一个要求,我需要创建一个范围,以显示unit_sold大于unit_sold平均值的项目,基于他们出售的公司。有一个产品型号。每个产品都具有以下属性:

这里给 unit_sold 公司

有很多公司。

此范围适用于计算所有项目的平均值。

scope :upward_trending, -> { where( "unit_sold > ?", average(:unit_sold)) }

现在我正在尝试创建一个范围,该范围仅显示平均值高于该公司unit_sold平均值的项目。

scope :upward_trending, ->(company) {where( "unit_sold > ?", where(company: company).average(:unit_sold)) }

我收到错误:

  

错误的参数数量(0表示1)

有人可以帮忙吗?谢谢!

使用Rails 4

所以这里的另一个问题是,如何将参数传递给ActiveAdmin中的作用域?

1 个答案:

答案 0 :(得分:0)

尝试将公司作为参数传递给您的范围,例如:Model.upward_trending(<some_company>)