按天创建的平均产品数量

时间:2013-11-21 14:19:22

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

我是rails初学者,我尝试编写一个简单的应用程序,用户可以在其中创建一些产品。所以现在我正在建立一个统计网站,我想在那里显示白天创建的产品的平均数量。

所以我的想法是计算:

@average_amount = Days_where_products_were_created / Products.all.count

所以我的问题是我不知道如何检查产品创建的天数?有一个简单的方法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

如果您想要对所有记录进行平均分析,可以使用ActiveRecord提供的#minimum#maximum计算来查找最早和最新的记录。

oldest = Products.minimum(:created_at)
newest = Products.maximum(:created_at)

现在您可以使用这些变量创建范围。为简单起见,请将Time个对象转换为Date以便在该范围内使用。

days_where_products_were_created = (oldest.to_date..newest.to_date).count

修改

如果您希望仅根据创建产品的日期确定平均值,则可以选择created_at Time,将其转换为Date以消除次数,并计算唯一值。< / p>

days_where_products_were_created = Products.pluck(:created_at).collect(&:to_date).uniq.count

答案 1 :(得分:0)

昨天创造的平均产品数量:

@average_amount = Products.all.count / Products.where(created_on: Date.yesterday.beginning_of_day..Date.yesterday.end_of_day).count

今天创建:

@average_amount = Products.all.count / Products.where(created_on: Date.today.beginning_of_day..Date.today.end_of_day)

4天前创建:

@average_amount = Products.all.count / Products.where(created_on: (Date.today.beginning_of_day-4.days)..(Date.today.end_of_day-4.days)).count

请注意,在您的代码中,您的模型似乎名为Products。它应该是Product,因为它是一个Rails惯例,用于以单数形式编写模型名称。

更进一步,使代码可重用:

from_date = Date.today - 4.days
to_date = Date.today

@average_amount = Product.all.count / Product.where(created_on: from_date.beginning_of_day..to_date.end_of_day).count

这样您只需编辑from_date&amp;相应地to_date变量。