我是rails初学者,我尝试编写一个简单的应用程序,用户可以在其中创建一些产品。所以现在我正在建立一个统计网站,我想在那里显示白天创建的产品的平均数量。
所以我的想法是计算:
@average_amount = Days_where_products_were_created / Products.all.count
所以我的问题是我不知道如何检查产品创建的天数?有一个简单的方法吗?谢谢!
答案 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
变量。