Couple of things:

* `highest` is far too generic. You'd be much better creating a method on `User` called `highest_ascent_within_period(period)`. At the moment there is high coupling between `User` and `Challenge` because `Challenge` also needs to know the database column to sum which means a change in `User` will ripple out to `Challenge`.
* Because you're invoking `highest` on a relation (`users`) there is no need to also pass in `users` as the first argument, it will already be scoped.