簡體   English   中英

關聯has_many計數超過1的Rails條件

[英]Rails condition where association has_many has count more than one

Package.rb

has_many :deals

Deal.rb

belongs_to package

現在簡單的問題是,我想獲得所有交易數量大於一個的包裹。 最好的方法是什么? where(:available_for_purchase => true)self.deals.count > 0

(package.rb)

  class << self
    def available
      where(:available_for_purchase => true)
    end
  end
def self.available
  joins(:deals).where(:available_for_purchase => true).uniq
end

加入deals協會將刪除沒有任何交易的Packages ... SQL在這里做了艱苦的工作。

然后使用:

Package.available

我將使用計數器緩存將交易計數作為Package模型上的一列提供,然后讓您將SQL用於條件。

Package.rb

has_many :deals
def with_deals
  where("deals_count > 0")
end

Deal.rb

belongs_to :package, :counter_cache => true

然后,您可以致電:

Package.with_deals

您可以在此處查看如何設置計數器緩存的示例: http : //railscasts.com/episodes/23-counter-cache-column

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM