[英]How do I group these objects into a hash?
我有一个事件模式,它有一个名为scheduled_time
的datetime
字段。 我需要创建一个哈希,该哈希以特定格式(“ mon”,“ tue”等)作为日期名称,并以该天发生的事件计数作为值。 我怎样才能做到这一点?
{
'mon' => 2,
'tue' => 4,
'wed' => 3,
'thu' => 5,
'fri' => 12,
'sat' => 11,
'sun' => 7,
}
我正在使用Rails 3.2.0和Ruby 1.9.2
最简单的方法是将count
与:group
选项一起使用:
h = Model.count(:group => %q{to_char(scheduled_time, 'dy')})
通常,您要GROUP BY的特定功能取决于数据库;具体取决于数据库。 上面的to_char
方法适用于PostgreSQL,而对于MySQL,则可以使用date_format
及lower
:
h = Model.count(:group => %q{lower(date_format(scheduled_time, '%a'))})
对于SQLite,您可能会使用%w
格式的strftime
,然后手动将数字转换为字符串。
请注意,使用Model.count(:group => ...)
将为您提供一个带孔的哈希:如果当天表中没有任何条目,则哈希将没有密钥。 如果您确实一直想要七个键,则创建一个带有零的哈希值:
h = { 'mon' => 0, 'tue' => 0, ... }
然后将count
结果合并到其中:
h.merge!(Model.count(:group => ...))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.