我试图在我们的系统中找到“欠薪”事件的集合。我们使用 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 中实现这一点,如果可以,我该怎么做?