我有以下内容:
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")
并且仅返回与其限制相关联的优惠。
答案 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
声明。