0

DataMapper::Collectionオブジェクトがあります。各エントリにはcreated_atプロパティがあります。エントリを1日に1つのテーブルでhtmlテーブルにレンダリングしたいと思います(そのためにSinatraを使用しています)。

すべてを1つのテーブルにレンダリングすることは問題ありませんでしたが、毎日そうすることはできませんでした。DataMapper :: Collectionオブジェクトの配列を考えました。このオブジェクトを繰り返し処理して、ジョブを実行します。しかし、私はそのような配列を構築する方法がわかりません:/

誰かが私の問題を解決する方法を知っていますか、または誰かが別の/より良いアプローチを持っていますか?前もって感謝します!

4

1 に答える 1

1

(少なくとも)2つのオプションがあります。1つ目は、データベースに作業を任せることです。datamapperについてはわかりませんが、ほとんどのデータベースマッパー(!)には、SQLのGROUPBYを使用してグループ化する機能があります。この場合、データベース関数を使用してタイムスタンプから日付を取得し、それをグループ化する必要があります。これは最速のオプションであり、あなたと将来のメンテナがリレーショナルデータベースに精通している場合はおそらく最高です。

2番目のオプションは、コード内のマッピングを行うことです。今のところエレガントなRubyを思いつくことはできませんが、少なくとも次のことはできます。

mapped_result = Hash.new [] # initiates each new entry with empty array
mapper_collection.each do |one_record|
  mapped_result[one_record.created_at.strftime '%Y-%m-%d'] << one_record
end

その後、1日録音することができます

mapped_result['2012-11-19']
于 2012-11-18T23:16:22.127 に答える