0

2 つのテーブルがあります (sqlite3 との多対多の関係): -User -Credit(with user_id & score)

そして、ユーザーのランクを計算しようとします。このユーザーのランクを計算するには、このユーザーのすべてのクレジットの合計を見つける必要があります。しかし、私はこれを行う方法がわかりません:(

私はこのようなことを試しましたが、うまくいきません:

User.all.join(:credits).order(sum(:score)).index(@user)

このエラーが発生します:

TypeError in UsersController#index
can't convert Symbol into String

ありがとう!

4

1 に答える 1

0

合計 (またはカウント) するには、スコアを合計できるように何らかの方法でユーザーをグループ化する必要があるため、グループで合計を使用する必要があります (これは "group by" で変換されます)。次のコードは試していませんが、次のようになるはずです。

User.select("users.name, sum(credits.score)").joins(:credits).group("credits.user_id")

これがお役に立てば幸いです

于 2012-07-29T22:26:41.337 に答える