В моем приложении у меня есть модель User с методом goal_ytd, которая выполняет некоторые вычисления.
В контроллере у меня есть переменная @users, которая может быть User или ActiveRecord::Relation of users, и я хотел бы суммировать все @users goal_ytd s.
Мое первое наклонение было:
@users.sum(&:goal_ytd)
В обоих случаях было предупреждено об устаревании, поскольку использование sum в ActiveRecord::Relation уходит в Rails 4.1.
Итак, я изменил код на:
@users.to_a.sum(&:goal_ytd)
Что тогда выбрало NoMethodError, потому что в известном случае @users назначается @users = User, а User не имеет метода to_a.
Присвоение @users с помощью @users = User.all выдает предупреждение об устаревании, поскольку Relation#all также устарел.
Есть ли способ получить все users как массив? Есть ли лучший способ?