私は 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):