user モデルが has_many: points をもっていて
point モデルが belongs_to の user_id と point 値と create_at をもっています
指定したユーザー(リレーションでもってる)に対して
ユーザごとに points レコードの一定期間内の point (user.points.point) を集計してランキングにしたいです
期間は term_since, term_until で変数でもっています
最終的にほしいのは select {user_id, rank, point} で
まだランキングをつける処理はかけていないんですが
とりあえず user_id とユーザに関連しているポイントレコードの一定期間内の集計のソートを
select {user_id, point} で取り出そうとしたのですが
ActiveRecord のクエリーをかくのにまだなれていなくて Syntaxerror がなかなかとれません
users.select(id, sum(:points).where(create_at >= term_since && create_at <= term_until) as point) .order(:point) .find_each do |id, point|
users.select(id, points.where(create_at >= term_since && create_at <= term_until) as point)) .select(sum(point) as point) .order(:point) .find_each do |id, point|
where や sum をどこにつければいいのかわからなくて
どのようにかけばよいのでしょうか
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/30 04:50
2018/11/30 05:52
退会済みユーザー
2018/11/30 06:28
2018/11/30 08:46
退会済みユーザー
2018/12/03 06:36
退会済みユーザー
2018/12/03 07:52