J'ai fait un site pour un jeu PS3 et j'ai beaucoup d'utilisateurs. Je veux faire des tournois basés sur les emplacements des gens et aimerais également cibler les groupes d'âge. Lorsque les utilisateurs inscrivent l'entrée, leur date de naissance est au format AAAA-MM-JJ. Je tire les données et en faire un hachage comme ceci:Ruby on Rails Données démographiques
# Site.rb
has_many :members
def ages
ages = {"Under 18" => 0, "19-24" => 0, "25-35" => 0, "36-50" => 0, "51-69" => 0,"70+" => 0}
ages_results = self.members.count("DATE_FORMAT(dob, '%Y')", :group =>"DATE_FORMAT(dob, '%Y')")
ages_results.each do |k,v|
k = k.to_i
if k.between?(18.years.ago.strftime("%Y").to_i, 0.years.ago.strftime("%Y").to_i)
ages["Under 18"] += v
elsif k.between?(24.years.ago.strftime("%Y").to_i, 19.years.ago.strftime("%Y").to_i)
ages["19-24"] += v
elsif k.between?(35.years.ago.strftime("%Y").to_i, 25.years.ago.strftime("%Y").to_i)
ages["25-35"] += v
elsif k.between?(50.years.ago.strftime("%Y").to_i, 36.years.ago.strftime("%Y").to_i)
ages["36-50"] += v
elsif k.between?(69.years.ago.strftime("%Y").to_i, 51.years.ago.strftime("%Y").to_i)
ages["51-69"] += v
elsif k > 70.years.ago.strftime("%Y").to_i
ages["70+"] += v
end
end
ages
end
Je ne suis pas un développeur Ruby expert et ne sais pas si l'approche ci-dessus est bon ou il peut être fait une bien meilleure façon, quelqu'un pourrait-il donner moi quelques conseils à ce sujet?
Vive
Merci pour mettre l'effort dans la réponse, il a contribué à rendre mon code plus élégant! – RailsSon