Rails查询记录,其中has_many count大于limit

时间:2013-07-03 00:26:09

标签: ruby-on-rails-3 activerecord

我有以下内容:

class OfferClaim
 belongs_to :offer
end

class Offer
  has_many :offer_claims
  attr_accessible :claim_limit
end

我需要能够做到这样的事情:

Offer.joins(:offer_claims).where("offer.claim_limit > offer_claims.count")

并且仅返回与其限制相关联的优惠。

1 个答案:

答案 0 :(得分:1)

这听起来像是counter_cache的完美用法。

class OfferClaim
  belongs_to :offer, :counter_cache => true
end

每当创建一个新的offer_claim_count时,这将增加offers表上的OfferClaim列(并在删除它时减少它)。

然后你的查询将是:

Offer.where("offer.claim_limit > offer_claims_count")

不需要joins声明。