我有一个 DataMapper::Collection 对象。它的每个条目都有一个created_at
属性。我想将条目呈现到 html 表中,每天一张表(为此我使用 Sinatra)。
将所有内容渲染到一张表中是没有问题的,但我并没有让它每天都这样做。我想到了一个 DataMapper::Collection 对象数组,我将对其进行迭代并完成工作。但我不知道如何构建这样一个数组:/
有谁知道如何解决我的问题,或者有没有人有不同/更好的方法?提前致谢!
我有一个 DataMapper::Collection 对象。它的每个条目都有一个created_at
属性。我想将条目呈现到 html 表中,每天一张表(为此我使用 Sinatra)。
将所有内容渲染到一张表中是没有问题的,但我并没有让它每天都这样做。我想到了一个 DataMapper::Collection 对象数组,我将对其进行迭代并完成工作。但我不知道如何构建这样一个数组:/
有谁知道如何解决我的问题,或者有没有人有不同/更好的方法?提前致谢!
你有(至少)两个选择。首先是让数据库为您完成工作。我不了解数据映射器,但大多数数据库映射器(!)都具有使用 SQL 的 GROUP BY 进行分组的功能。在这种情况下,您必须使用数据库函数从时间戳中获取日期,然后对其进行分组。这是最快的选择,如果您和未来的维护人员熟悉关系数据库,这可能也是最好的选择。
第二个选项是到您的代码中的映射。我现在不能想出一个优雅的 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
然后你可以录制一天
mapped_result['2012-11-19']