0
我有一個團隊模型,有兩個屬性,.type
和.sub type
。Rails group by第一列,然後第二列
我想通過team.type
先打電話再打team.subtype
。
我試圖
Team.all.group_by{|e| [e.type, e.sub_type]}
但是,這讓我
{
["Sport", "Football"] => [
teamObject,
teamObject
],
["Sport", "Soccer"] => [
teamObject,
teamObject
],
}
我要的是....
{
"Sport" => {
"Football" => [
teamObject,
teamObject
],
"Soccer" => [
teamObject,
teamObject
],
},
"Drama" => {
"Band" => [ teamObject, teamObject],
"Dance" => [ teamObject, teamObject],
},
}
應該怎樣處理我的查詢或過濾器是什麼樣子?理想情況下,我想把它變成一個範圍。
注意:我不想創建更多模型,表格或關係。
謝謝。我使用了Team.all.group_by {| e | e.type} .map {| k,v | {k => v.group_by {| e | e.sub_type}}}。我如何寫作範圍? – MicFin
你不能把它寫成範圍。 Rails中的作用域對'ActiveRecord :: Relation'對象起作用,並且應該生成針對數據庫運行的SQL查詢。但是在從數據庫收到數據之後,在結果數組上調用'group_by'方法。您必須首先從數據庫加載數據,然後才能使用此方法進行分組。你可以在Array上編寫你自己的'nested_group_by'方法... – spickermann