/ Wie kann ich eine DataMapper Collection pro Tag in eine Sammlung zerlegen? - Ruby, Datenbank, Sinatra, Datamapper, Ruby-Datamapper

Wie zerschneide ich eine DataMapper Collection pro Tag in eine Sammlung? - Ruby, Datenbank, Sinatra, Datamapper, Ruby-Datamapper

Ich habe ein DataMapper :: Collection-Objekt. Jeder Eintrag hat einen created_at Eigentum. Ich möchte die Einträge in HTML-Tabellen rendern, eine Tabelle pro Tag (ich benutze Sinatra dafür).

Es war kein Problem, alles zu einem zu machenTabelle, aber ich habe es nicht für jeden Tag bekommen. Ich dachte an eine Reihe von DataMapper :: Collection-Objekten, über die ich nur iterieren und die Arbeit machen würde. Aber ich weiß nicht, wie man ein solches Array baut : /

Kann jemand mein Problem lösen, oder hat jemand einen anderen / besseren Ansatz? Danke im Voraus!

Antworten:

1 für die Antwort № 1

Sie haben (mindestens) zwei Optionen. Das zuerst ist es, die Datenbank die Arbeit für Sie erledigen zu lassen. Ich weiß nichts über Datamapper, aber die meisten Datenbankmapper (!) Haben Funktionen zum Gruppieren mit SQL "s GROUP BY. In diesem Fall müssten Sie eine Datenbankfunktion verwenden, um das Datum aus dem Zeitstempel zu holen und dann die Gruppe zu gruppieren. Dies ist die schnellste Option und wenn Sie und zukünftige Betreuer mit relationalen Datenbanken vertraut sind, ist dies wahrscheinlich auch der beste.

Das zweite Möglichkeit besteht darin, das Mapping in Ihrem Code zu verwenden. Ich kann mir im Moment kein elegantes Ruby-Ding einfallen lassen, aber Sie könnten zumindest Folgendes tun:

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

und dann kannst du für einen Tag mit aufnehmen

mapped_result["2012-11-19"]