1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails Ransackで絞り込んだ後の合計値があわない

Last updated at Posted at 2019-09-13

この記事では、RailsのGemのRansackを使ってデータの絞り込みを行った後、コラムの合計値を計算したら結果があわなくて困った話を書きます。

sample_controller.rb
sample = Sample.all
@q = sample.ransack(params[:q])
@sample = @q.result(distinct: true)

@total_a = @sample.sum(:a)
@total_b = @sample.sum(:b)
@total_c = @sample.sum(:c)

のようにcontrollerを書いて、viewで適当なテーブルに出力すると、
下のテーブルのようになります。

id a b c
1 100 100 100
2 100 100 100
3 100 100 100
合計 100 100 100

(distinct: true)としたので、重複データを同じものとみなしています。
コラムaは100のデータが1つだから、合計は100という風に処理されてしまいます。

sample_controller.rb
@sample = @q.result(distinct: false)

とすれば、重複データを別々のデータとして識別してくれます。
コラムaは100のデータと100のデータと100のデータがあるから、合計300と正しく処理してくれます。

id a b c
1 100 100 100
2 100 100 100
3 100 100 100
合計 300 300 300
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?