activerecord - Rails Active Record: 检索和合并来自两个不同表/源的相似数据

  显示原文与译文双语对照的内容
0 0

在我的新 Rails ( 4.1 ) 应用程序中,我有两种数据模型:

  1. 每日聚合数据( 比如,字段"销售","日期",。),它被填充到昨天
  2. ""来自API的数据,每分钟获取,内容相同但命名不同( 比如 。"收入","时间戳,。

在一个视图中,我想显示今天的( 1 ) + ( 最后) 值,这是当前流( 2 )的最后一个值。

问题是,两个表中的命名非常不同,而且有些数据字段也不同,所以


data = daily_data + current_data.last

不工作我的想法是:

  1. 仅获取相关列:

    
    daily_data.select("sales, date")
    live_data.select("revenue, timestamp").last
    
    
  2. 修改时间戳到日期

    
    live_data.timestamp.to_date
    
    
  3. 匹配"销售"到"收入"并合并/合并两者( 仅用于视图,而不是在ActiveRecord中)

我的想法好我应该如何去实现它? 我在关联中缺少什么? 另外,我还冒险为单表继承和考虑定义父数据模型"company_data",同时创建了daily_data和live_data子模型,但是这可能是多余的-or?

编辑:

操作完成后,我计划使用

 
.group_by_date

 

使用ChartKick将数据显示为图表。

编辑结束

如果问题是愚蠢的,我仍然在 Rails,并搜索 1.5.。

感谢你提前致谢 !

时间: 原作者:

0 0

daily_data.select("sales as revenue, date as datadate")
live_data.select("revenue, timestamp as datadate").last

这种方式在两种情况下,属性将是收入和 datadate 。

编辑:

关于group_by的注释是原始问题中不存在的附加信息。 由于group_by由数据库计算,所以仍然需要将数据库中使用的字段名称发送给它。 选择解决方案只改变ActiveRecord对象中的属性。


@data = daily_data.select("sales as revenue, date as datadate").group_by_date(:date)
@data <<live_data.select("revenue, timestamp as datadate").last

...