In my app, I have a User model, with a goal_ytd method, which performs some calculations.
In a controller, I have a variable @users that might be User or an ActiveRecord::Relation of users, and I would like to sum all of the @users's goal_ytds.
My first inclination was:
@users.sum(&:goal_ytd)
Which threw a deprecation warning in both cases because using sum on an ActiveRecord::Relation is going away in Rails 4.1.
So, I changed the code to:
@users.to_a.sum(&:goal_ytd)
Which then threw a NoMethodError because, in a certain circumstance, @users is assigned by @users = User and User has no to_a method.
Assigning @users using @users = User.all throws a deprecation warning because Relation#all is also deprecated.
Is there a way to get all Users as an array? Is there a better way?
On Rails 4.1
If
goal_ydtis a column in the users table:If
goal_ydtis a method inUserclass: