В продолжение ответа Скотта Шеа, я бы использовал несколько областей действия
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