Ich habe einige Code gehackt, der seinen Zweck erfüllt, aber es fühlt sich sehr klobig/ineffizient. Aus einer Tabelle mit vielen Einträgen hat jeder eine Monats- und Jahreszeichenfolge: "September 2016" usw. Daraus erstelle ich ein chronologisch geordnetes Array von Monaten und deren Häufigkeiten, die in einem Dropdown-Auswahlformular verwendet werden: ['November 2016 (5), September 2016 (5)].Effizienz von Ruby-Code: Hash von Monat + Häufigkeit in formatierte sortierte Array
@months = []
banana = Post.pluck(:month)
#array of all months posted in, eg ['September 2016', 'July 2017', etc
strawberry = banana.each_with_object(Hash.new(0)){|key,hash| hash[key] += 1}
#hash of unique month + frequency
strawberry.each { |k, v| strawberry[k] = "(#{v.to_s})" }
#value into string with brackets
pineapple = (strawberry.sort_by { |k,_| Date.strptime(k,"%b %Y") }).reverse
#sorts into array of months ordered by most recent
pineapple.each { |month, frequency| @months.push("#{month}" + " " + "#{frequency}") }
#array of formatted months + frequency, eg ['July 2017 (5)', 'September 2016 (5)']
Ich hatte gehofft, einige der Ruby-Gurus hier könnten mir in mancher Hinsicht helfen, diesen Code zu verbessern. Irgendwelche Ideen oder Vorschläge würden sehr geschätzt werden!
Danke!