Метод sort_by устарел - Возможные решения?

мой текущий проект рельсов дает предупреждение -

DEPRECATION WARNING: Method sort_by is deprecated and will be removed in Rails 5.1, as ActionController::Parameters no longer inherits from hash.

Я искал это предупреждение, а также возможные исправления, но не могу ничего найти по этому поводу. Мне интересно, есть ли у кого-нибудь здесь какие-либо предложения, исправления или замены для sort_by ? Если это простое решение, я прошу прощения, поскольку я все еще изучаю рельсы.

Спасибо, что нашли время, чтобы прочитать и / или ответить.

Rails -v 5.0.7.2 | Ruby -v 2.6.4

Всего 2 ответа


Вы можете сортировать что угодно, используя обычную sort Ruby. Вот пример, который сортирует экземпляры Foo по key или val , вперед и назад:

class Foo
  attr_reader :key, :val

  def initialize(key, val)
    @key = key
    @val = val
  end

  def to_s
    "#{key}: #{val}"
  end
end

x = Foo.new('x', 1)
y = Foo.new('y', 2)

array = [x, y]

puts array.sort { |a, b| a.key <=> b.key }
puts array.sort { |a, b| b.key <=> a.key }
puts array.sort { |a, b| a.val <=> b.val }
puts array.sort { |a, b| b.val <=> a.val }

В Rails 5 ActionController :: Parameters больше не наследуется от HashWithIndifferentAccess.

Inheriting from `HashWithIndifferentAccess` allowed users to call any
enumerable methods on `Parameters` object, resulting in a risk of losing the
`permitted?` status or even getting back a pure `Hash` object instead of
a `Parameters` object with proper sanitization.

Посмотрите на это изменение

Если вам нужно преобразовать ActionController :: Parameters в настоящий хеш, тогда он поддерживает метод to_h . Кроме того, ActionController :: Parameters будет по-прежнему содержать методы, такие как fetch, slice, slice !, кроме, кроме !, extract, delete и т. Д. Вы можете подробно ознакомиться с ними здесь .


Есть идеи?

10000