1

私たちのシステムで「未払い」イベントのコレクションを見つけようとしています。Postgres データベースを使用して Rails 3.2 を実行しています。

データ構造は以下の通りです。

class Event < ActiveRecord::Base
  has_many :charges
  has_many :transactions
end

class Charge < ActiveRecord::Base
  belongs_to :event
end

class Transaction < ActiveRecord::Base
  belongs_to :event
end

低額のイベントは、合計料金が合計トランザクションよりも多いイベントとして定義されます。

sum(charges.total) > sum(transactions.total)

私の SQL スキルは貧弱で、ActiveRecord を使用してこれを実行しようとしています。これは私の最新の試みですが、適切なコレクションが戻ってきません。特に、複数の取引があった完全に支払われたイベントが含まれているようです。

Event.joins(:charges,:transactions).group('charges.event_id, transactions.event_id').having("sum(charges.total) > sum(transactions.total)")

ActiveRecordでこれを達成することは可能ですか?もしそうなら、どうすればそれを実現できますか?

4

1 に答える 1