1

Rails を使用して、データベース内の特定の列の合計を計算しようとしています。私は現時点でこれを使用しています:

@total = Product.sum (:cost)

これは機能し、テーブル内のすべての合計コストを返します。すでに配列にあるデータからそれを行おうとしている場合はどうなりますか? 例えば:

@products = Product.where('date >= ? AND date <= ?', Date.today.beginning_of_month.to_datetime, Date.today.end_of_month.end_of_day.to_datetime)

次に、その一連の製品で同じことを行うことができますか?

誰かが助けてくれることを願っています! タ。

4

2 に答える 2

4

.sum結果の ActiveRecord オブジェクトに単純に追加できます。

Product.where('date >= ? AND date <= ?',
 Date.today.beginning_of_month.to_datetime,
 Date.today.end_of_month.end_of_day.to_datetime).sum(:cost)

これにより、次のようなクエリが生成されます

select sum(cost) from products where (date >= ... and date <= ...)
于 2013-01-07T17:54:02.403 に答える
2

インスタンス化された配列(リレーションオブジェクトではない)がすでにある場合は、injectを使用できます。

@total = @products.collect(&:cost).inject {|sum, cost| sum += cost }

あなたが関係を持っているならば、meagarの答えはよりよく働きます。

于 2013-01-07T18:05:42.460 に答える