是否已弃用Rails group_by?

vie*_*one 6 ruby ruby-on-rails

我有一个我想要分组的数组,看起来'group_by'功能对我的情况来说是好的.

http://apidock.com/rails/Enumerable/group_by

我在Rails 3.2.13中使用它.

grouped_array = my_array.group_by(&:my_function)

# Assume run 'my_function' have result1 on element1, element3 and result2 on element2, element4, then: 
    # grouped_array = {
    #    result1 => [element1, element3],
    #    result2 => [element2, element4],
    #    ...
    # }
Run Code Online (Sandbox Code Playgroud)

但我发现它在4.0.2中被弃用了.

我应该使用哪种功能?

Fre*_*ung 15

它没有被弃用.

1.8.7之前的Ruby没有group_by内置,因此rails添加了它.Ruby 1.8.7添加了group_by,但是当rails group_by返回有序哈希时,ruby 1.8.7返回了普通哈希值(因为有序哈希值还没有在ruby 1.8.7中),所以rails继续覆盖这个方法.

Ruby 1.9确实有group_by,所以rails不再需要覆盖它,但是这个代码留给那些仍然运行1.8.7的人.

Rails 4降低了ruby 1.8.7的兼容性,所以这样的代码从rails中删除了.它并没有被弃用,但它不再是rails,因为它已经成为ruby标准库的一部分.