Ruby on rails 需要了解rails活动记录查询的帮助吗

Ruby on rails 需要了解rails活动记录查询的帮助吗,ruby-on-rails,ruby-on-rails-3,activerecord,join,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 { in

我有两种型号

客户与交易

 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
      

      嗨,莫希特,你什么意思?您想将客户可以创建的交易数量限制为1?@blawzoo no。我想找出那些在过去30天内只有1笔交易的客户。我还需要找出那些在过去30天内有1笔以上交易的客户。
      one_transaction = Customer.one_recent_transaction
      many_transactions = Customer.many_recent_transactions