This method is very much not ruby-like. We have array processing and reduction to perform this kind of operations nicely.

def votes_sum
  votes.pluck(:weight).sum
end

Will do much, much better and looks much better. Also it's much better performant.