是否已弃用Rails group_by?

时间:2014-08-15 10:24:28

标签: ruby-on-rails ruby

我有一个我要分组的数组,看起来像是' 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],
    #    ...
    # }

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

我应该使用哪种功能?

2 个答案:

答案 0 :(得分: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标准库的一部分。

答案 1 :(得分:1)

Array#sort可以解决这个问题吗?

@my_array.sort { |item1, item2|  item1.my_function <=> item2.my_function }