通过属性将两个记录合并到一个新对象中

时间:2012-05-09 18:11:15

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

好的..我已经在这一段时间里撞到了墙上一段时间了。

我有两个模型,比如说DownloadsRankings,它们都有自己独特的架构。我需要按创建它们的时间合并这些记录,然后将该数据发送到我的视图以显示在表中,如下所示。

 Hour    download_count     overall_ranking
 1:00    10                 115
 2:00    11                 116
 ...

我想创建一种“meta”容器,它包含@download和@ranking以及小时的所有属性:

  • 小时创建于
  • download_count(来自下载)
  • overall_ranking(来自排名)
  • ...

如何创建此元容器对象?

我能够按小时创建的下载和排名进行分组,并通过哈希合并它们。所以我有一个看起来像的对象:

@metrics = {"Sun, 06 May 2012 00:00:00" => [<Ranking ...>, <Download ...>], ...}

但是我不确定如何制作一个适合我上面模式的新对象。我唯一的解决方案是创建一个新类并手动设置我想要传输的每个属性。这感觉真的很麻烦。

(我使用rails 3.0.10和ruby 1.8.7)

1 个答案:

答案 0 :(得分:2)

听起来我想要使用presenter。这个链接是从2007年开始的,但是搜索“rails presenter pattern”可以让你朝着正确的方向前进。