簡體   English   中英

如何將這些對象分組為哈希?

[英]How do I group these objects into a hash?

我有一個事件模式,它有一個名為scheduled_timedatetime字段。 我需要創建一個哈希,該哈希以特定格式(“ 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_formatlower

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM