我有两个模型
客户和交易
Customer
has_many :transactions
Transaction
belongs_to :customer
现在我需要所有客户拥有
- 过去 30 天内超过 1 笔交易
- 过去 30 天内恰好有 1 笔交易
最佳答案
扩展 ScottJShea 的答案,我会使用一些范围
scope :one_recent_transaction, :conditions => lambda {
includes(:transactions).where("transactions.date > ?", DateTime.now - 30.days).group("customer.id").having("COUNT(transactions.id) = 1")
}
scope :many_recent_transactions, :conditions => lambda {
includes(:transactions).where("transactions.date > ?", DateTime.now - 30.days).group("customer.id").having("COUNT(transactions.id) > 1")
}
然后像这样使用它们
one_transaction = Customer.one_recent_transaction
many_transactions = Customer.many_recent_transactions
关于ruby-on-rails - 需要帮助理解 Rails 事件记录查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779141/