ruby-on-rails - 从查询中保存新对象

标签 ruby-on-rails ruby postgresql activerecord bigdecimal

我有一个带有 PostgreSQL 数据库的 Rails 应用程序,其中包含过去 10 年的每小时价格数据,我需要获取保存在新数据库表中的每一天的每日平均价格。此查询按天对记录进行分组并返回每天的平均价格:

averages = Sale.average(:price, :group => "DATE_TRUNC('day', date)")

Rails 控制台响应如下所示(2 天数据的样本):

{"2013-01-03 00:00:00"=>#<BigDecimal:7fcc7c2e4a28,'0.1752888888 88888889E2',27(27)>, "2013-01-02 00:00:00"=>#<BigDecimal:7fcc7c2e4848,'0.2547086956 52173913E2',27(27)>}

谁能建议如何编写一些代码来将这些返回的日期和平均价格值保存到一个名为 DailyAverage 的新对象中?

最佳答案

你的回应是这样的:

{
  'date' => BigDecimal,
  'date2' => BigDecimal,
  'date2' => BigDecimal,
}

因此您可以像这样访问每个日期的每个平均值:

averages = Sale.average(:price, :group => "DATE_TRUNC('day', date)")

averages.each do |date, avg|
  DailyAverage.create(date: date, average: avg.to_f)
end

此代码假定您有一个带有 dateaverage 属性的 DailyAverage 模型。

您可能必须在每个循环中使用 to_date:

averages.each do |date, avg|
  DailyAverage.create(date: date.to_date, average: avg.to_f)
end

关于ruby-on-rails - 从查询中保存新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14147498/

相关文章:

javascript - 何时使用 node.js vs sinatra vs rails?

ruby-on-rails - Ruby,具有 6 个随机数的用户 ID

ruby-on-rails - 没有 Spring 的 Rails runner

ruby - 临时更改 Rake 中的当前目录

sql - PostgreSQL age() 函数 : different/unexpected results when landing in dfferent month

postgresql - 默认设置对自身的引用

python - Pandas 将数据框写入其他 postgresql 模式

ruby-on-rails - “validates_presence_of”在 Mongoid 中效果不佳?

ruby-on-rails - 如何检查连接是否使用 ssl?

ruby - AWS Codedeploy 代理需要运行 ruby​​ 2.x,您无法安装旧版本的 ruby​​(解决方法)