ruby-on-rails – 我如何按天分组而不是日期?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 我如何按天分组而不是日期?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,所以我有
>> list = Request.find_all_by_artist("someBand")
=> [#<Request id: 1,artist: "someBand",song: "someSong",venue: "Knebworth - Stevenage,United Kingdom",showdate: "2011-07-01",amount: nil,user_id: 2,created_at: "2011-01-01 18:14:08",updated_at: "2011-01-01 18:14:09".............

接着

list.group_by(&:created_at).map {|k,v| [k,v.length]}.sort
=> [[Sat,01 Jan 2011 18:14:08 UTC +00:00,10],[Sun,09 Jan 2011 18:34:19 UTC +00:00,1],09 Jan 2011 18:38:48 UTC +00:00,09 Jan 2011 18:51:10 UTC +00:00,09 Jan 2011 18:52:30 UTC +00:00,[Thu,10 Feb 2011 02:22:08 UTC +00:00,10 Feb 2011 20:02:20 UTC +00:00,1]]

问题是我有几个太阳,1月9日和10日的一对,而不是这样的一个

这是我需要的

=> [[Sat,4],2]]

解决方法

时间是一个相当复杂的对象.假设您要按创建日期而不是全部时间进行分组,请在模型中开始创建自定义方法以返回组标准.

方法应该返回创建日期,可能返回字符串.

def group_by_criteria
  created_at.to_date.to_s(:db)
end

然后,通过该方法进行分组.

list.group_by(&:group_by_criteria).map {|k,v.length]}.sort
原文链接:https://www.f2er.com/ruby/273692.html

猜你在找的Ruby相关文章