Rails が fixnum として解釈しているように見える単純なクエリがありますが、その理由はわかりません。私のコードは次のようになります。
@user_with_points = Point.select("sum(points) as points, user_id").order("points desc").group("user_id")
@user_with_points.each_with_index do |user_with_point, index|
を追加するputs @user_with_points
と、次のように表示されます。
#<Point:0x6360138>
#<Point:0x6322f38>
ただし、次のエラーが表示されます:
NoMethodError: undefined method 'each' for 75:Fixnum
コード全体を追加する
def self.update_overall_rank_and_points
@user_with_points = Point.select("sum(points) as points, user_id").order("points desc").group("user_id")
rank = 0
points = 0
@user_with_points.each_with_index do |user_with_point, index|
@user = User.find(user_with_point.user_id)
if user_with_point.points != points
points = user_with_point.points
rank += 1
end
@user.rank = rank
@user.points = user_with_point.points
@user.save
end
end