Sie können dies nicht als Bereich schreiben. Bereiche in Rails wirken auf ActiveRecord::Relation
Objekte und sollen SQL
Abfragen erzeugen, die gegen die Datenbank ausgeführt werden.
Aber die group_by
Methode wird auf dem array
aufgerufen, nachdem die Daten von der Datenbank empfangen wurden.
Sie müssen immer zuerst die Daten aus der Datenbank laden, bevor Sie sie mit group_by
gruppieren können.
Sie könnten Ihre eigene nested_group_by
Methode auf Array schreiben:
class Array
def nested_grouped_by(group_1, group_2)
group_by { |e| e.send(group_1) }.
map { |k, v| { k => v.group_by { |e| e.send(group_2) } } }
end
end
, die wie folgt verwendet werden:
Team.all.nested_grouped_by(:type, :subtype)
Notiere die all
, die den Umfang, um tatsächlich die Daten aus der Datenbank zu laden erzwingen und gibt ein Array zurück.