1

Railsで現在の合計を計算するための最良の方法(または実際には、どのような方法でも)は何ですか?

モデル、セールがあります。数量列とsales_value列があります。テーブルがisbn_id、channel_id、invoice_dateの順に並べ替えられている場合、3番目の列total_quantityに前のレコードの数量値の合計を入力する必要があります。これにより、あらゆる種類の賢明なデータベース管理アラームベルが鳴ります。それが可能かどうか疑問に思います。

この累積合計が必要な理由は、累積数量が特定の範囲内にある売上にパーセンテージを適用するためです。売上のマージンは時間の経過とともに劇的に変化する可能性があるため、すべてのレコードの平均売上値を使用することはできません。したがって、ロイヤルティの受取人に過大または過小に支払う可能性のある一連の売上に平均を適用します。

それで。どういうわけか、Saleモデルでbefore_saveコールバックを実行し、update_attributeを実行する必要がありますか?テーブルが特定の方法でソートされたときに前のレコードの値を返すメソッドはありますか?または、すべての販売レコードを配列にダンプし、injectを使用して現在の合計を累積する必要がありますか?

どんなアイデアでも大歓迎です。よろしくお願いします。

更新:その後の質問はここで尋ねられます。

4

1 に答える 1

1

inject(srsly)は使用しないでください。これを行うための最良の方法は、activerecord(sumなど)でSQLグループコマンドやCalculationsメソッドを使用することです。

http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html

于 2011-05-25T17:32:27.437 に答える