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