ユーザは1日ごとに獲得ポイントと消費ポイントのレコードをもっています
class User < ActiveRecord::Base has_many :acquires has_many :consumes end
子テーブルはそれぞれ属する user_id と対象日時を表す date をもっています
ある @user の特定の日時の両ポイントを表にしたくて
最終的に user_id でフィルタして date で group_by して
[date, sum(acquires.point), sum(consumes.point)]
をセレクトしたいんですが
acquires と consumes を date を共有して結合する方法がわからず困っています
@user はすでにインスタンスになっているため
@user.includes(:acquires).includes(:consumes).where('acquires.date' : 'consumes.date')
とかけません
@user.acquires.includes(:consumes)
は子同士が関係を持ってないのでできないとエラーが出ます
生 SQL には
join consumes on acquires.date = consumes.date and acquires.user_id = consumes.user_id
という構文がかけるみたいなんですが ActiveRecord で親子でないテーブルを特定のカラムで結合するにはどうかけばいいのでしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/17 05:12