2

私は Rails 3.2 webapp を開発しています。このアプリでは統計機能を取得しました。特定のタスクが (選択したユーザーに対して) 生成した収益の出力を生成し、この日付範囲内の日ごとに合計をグループ化したいと考えています。

これどうやってするの?Task モデルにクラス メソッドを作成しました。

def self.earnings (params)
 earnings = group("date(created_at)")
 earnings = earnings.where("user_id = ?", params[:user_id]) if params[:user_id].present?
 earnings = earnings.completed.sum(:item_value).round
 earnings
end

そして、ユーザーコントローラーで、このメソッド呼び出しを取得しました:

def employees
 if params[:search]
    @statistics = Task.earnings(params)
 end
end

これを実行すると、次のエラーが発生します。

ActiveRecord::StatementInvalid (PG::Error: ERROR:  column "tasks.created_at" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: ...ser_id = '13') GROUP BY date(created_at) ORDER BY created_at...
                                                             ^
: SELECT SUM("tasks"."item_value") AS sum_item_value, date(created_at) AS date_created_at FROM "tasks"  WHERE "tasks"."account_id" = 4 AND "tasks"."status" = 'completed' AND (user_id = '13') GROUP BY date(created_at) ORDER BY created_at DESC):
4

0 に答える 0