A common question you may want to answer on user-input data is: what values have been entered and how many times is each one used?
Maybe you have a list of dropdown options and you want to investigate removing a rare-used option.
Ruby has two handy methods that I reach for often: uniq
and tally
.
Usage
The uniq
method operates on an enumerable and compresses your data down to unique values.
Outreach::Task.all.map(&:status).uniq => ["Confirmed w/o Outreach", "Awaiting Outreach", "Responded", "No Response Expected", "Follow-up", "Awaiting Reply"]
While most developers are familiar with uniq
, the tally
method is one of the best kept secrets in Ruby. The tally
method takes an enumerable of values and returns a hash where the keys are unique values and the values are the number of times the value appeared in the list.
Outreach::Task.all.map(&:status).tally => {"Confirmed w/o Outreach"=>106, "Awaiting Outreach"=>28, "Responded"=>48, "No Response Expected"=>10, "Follow-up"=>4, "Awaiting Reply"=>8}
These two methods are great to have in your toolbox to quickly explore your data in a Rails console.
Additional Resources
Ruby API: Enumerable#uniq
Ruby API: Enumerable#tally
Top comments (0)