Grupuj użytkowników według przedziału wiekowego w rubinie

Próbuję podać liczbę użytkowników według przedziału wiekowego:

Range  : #Users
10-14  : 16
15-21  : 120
22-29  : 312
30-40  : 12131
41-70  : 612
71-120 : 20

Myślałem o stworzeniu statycznej tablicy skrótów:

AGE_RANGES = [
  {label:"10 - 14", min:10, max:14},
  {label:"15 - 21", min:15, max:21},
  {label:"22 - 29", min:22, max:29},
  {label:"30 - 40", min:30, max:40},
  {label:"41 - 70", min:41, max:70},
  {label:"71 - 120", min:71, max:120}
]

a następnie użyj go do mojego filtra wyszukiwania, a także do mojego zapytania. Ale nie mogę wymyślić sposobu na uzyskanie z tego jak największej wydajności.

Moja metoda w moich modelach obejmuje tylko grupy według wieku:

def self.group_by_ageRange(minAge, maxAge)

  query = User.group("users.age")
              .where("users.age BETWEEN minAge and maxAge ")
              .select("users.age,
                        count(*) as number_of_users")

end

Jakieś sugestie?

questionAnswers(2)

yourAnswerToTheQuestion