Fer*_*ndo 0 ruby sql group-by ruby-on-rails activemodel
我需要先按 YEAR 然后按 MONTH 对我的 ActiveRecords 进行分组,如下所示:
{2017=>
"January"=>
[Record1, record2, etc]
"February"=>
[Record1, record2, etc]
2016=>
"January"=>
[Record1, record2, etc]
"February"=>
[Record1, record2, etc]
}
Run Code Online (Sandbox Code Playgroud)
等等...
我试着用
.group_by( |a| [a.year, a.month] )
Run Code Online (Sandbox Code Playgroud)
但我能得到的最好的是:
{[2017, "January"]=>
[Record1, record2, etc]
[2017,"February"]=>
[Record1, record2, etc]
[2016, "January"]=>
[Record1, record2, etc]
[2016,"February"]=>
[Record1, record2, etc]
}
Run Code Online (Sandbox Code Playgroud)
谢谢
PS:我的模型中有名为 YEAR 和 MONTH 的列。
PS2:我使用 Ruby 2.3 和 Rails 4.2
.group_by(&:year).each_with_object({}) {|(k, v), h| h[k] = v.group_by(&:month) }
Run Code Online (Sandbox Code Playgroud)
会给你你想要的:
{ 2017 => {
"January" => [record1, record2, etc],
"February" => [record1, record2, etc]
},
2016 => {
...
Run Code Online (Sandbox Code Playgroud)
所以
results[2017]['January'] #=> [record1, record2, etc]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
930 次 |
| 最近记录: |