[Feature proposal] Enumerable#group_by should take a second block to allow setting the value

19 views
Skip to first unread message

David Carlin

unread,
Dec 4, 2017, 7:51:14 PM12/4/17
to Ruby on Rails: Core
Elixir has a great feature in its Enumerable,group_by/3 function where you can pass 2 functions to it. The first being what to group by (called a key_fun). The second being a function that returns the val (called the value_fun). See: https://hexdocs.pm/elixir/Enum.html#group_by/3

By default the value_fun is a function that does nothing ie. fn x -> x end (making its default behaviour the same as Ruby/Rails group_by method)

I would like this functionality in Rails. What do you think, dear community?

(Apologies if this has been brought up before. I did a quick search but found nothing)

Thanks

Kasper Timm Hansen

unread,
Dec 6, 2017, 4:58:16 AM12/6/17
to rubyonra...@googlegroups.com
I think we’ll stick with `posts.group_by(&:id).transform_values { |v| v.title.uppercase }` — and it’s not because we don’t `value_fun`! 😄


--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-co...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

--
Kasper

Alberto Almagro

unread,
Dec 7, 2017, 5:00:51 AM12/7/17
to Ruby on Rails: Core
Hi David,

For me it is confusing that #group_by does something else besides of grouping, it feels like a side effect to me. In my opinion, the solution that Kasper proposed reveals better the intention of the code.

Thanks for your proposal!
Reply all
Reply to author
Forward
0 new messages