ruby-on-rails - 需要帮助理解 Rails 事件记录查询

标签 ruby-on-rails ruby-on-rails-3 activerecord join

我有两个模型

客户和交易

 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/

相关文章:

ruby-on-rails - 如何重定向 rails 中不存在的路由

ruby-on-rails - 特定类型的多态所属关联

javascript - Rails 3.1.1 中的 jquery 总是给出 DOMException

ruby-on-rails - 对模型使用 has_and_belongs_to_many 是个坏主意吗?

mysql - 事件记录内连接

java - MultipartEntityBuilder 将图片发送到铁路服务器

ruby-on-rails - 有时在 Rails 中出现 "Invalid Route Name"错误

javascript - Rails jQuery chop 'read more & read less' 链接

ruby-on-rails - 我没有路线匹配 { :controller= >"refinery/refinery/admin/dashboard"} error

ruby-on-rails-3 - Rails 3 中一个 AR 模型内的多个数据库表