回答編集履歴

2

moke

moke score 2165

2017/04/12 18:58  投稿

力技をしたところ大変申し訳ないのですが。
こんな感じになると思います。短くなりすぎですかね?
```ruby
#ransackで日付の期間で抽出
   @q = Game.joins(:member).references(:member).ransack(params[:q])
   @q.game_date_gteq = Time.now.strftime("%Y-01-01") if @q.game_date_gteq.nil?
   @q.game_date_lteq = Time.now.strftime("%Y-12-31") if @q.game_date_lteq.nil?   
   @games = @q.result(distinct: true).group(:参加者).pluck("members.name,sum(games.参加人数)")#SQLの段階で集計しときます。
   @games = @q.result(distinct: true).group(:member_id).pluck("members.name,count(games.member_id)")#SQLの段階で集計しときます。
   @games_hash=Hash[*@games.flatten]#hash化
 #Highchartsの設定
   @graph = LazyHighCharts::HighChart.new('graph') do |f|
     f.title(text: '参加数の推移')
     f.xAxis(categories: @games_hash.keys)
     f.series(name: '参加数', data: @games_hash.values)
     f.chart(type: "bar") #棒グラフ
   end
```
1 a

moke

moke score 2165

2017/04/12 18:56  投稿

力技をしたところ大変申し訳ないのですが。
こんな感じになると思います。短くなりすぎですかね?
```ruby
#ransackで日付の期間で抽出
   @q = Game.ransack(params[:q])
   @q = Game.joins(:member).references(:member).ransack(params[:q])
   @q.game_date_gteq = Time.now.strftime("%Y-01-01") if @q.game_date_gteq.nil?
   @q.game_date_lteq = Time.now.strftime("%Y-12-31") if @q.game_date_lteq.nil?   
   @games = @q.result(distinct: true).group(:参加者).pluck("games.参加者,sum(games.参加人数)")#SQLの段階で集計しときます。
   @games = @q.result(distinct: true).group(:参加者).pluck("members.name,sum(games.参加人数)")#SQLの段階で集計しときます。
   @games_hash=Hash[*@games.flatten]#hash化
 #Highchartsの設定
   @graph = LazyHighCharts::HighChart.new('graph') do |f|
     f.title(text: '参加数の推移')
     f.xAxis(categories: @games_hash.keys)
     f.series(name: '参加数', data: @games_hash.values)
     f.chart(type: "bar") #棒グラフ
   end
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る