Rails条件,其中关联has_many计数多于一个

gee*_*pak 1 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

Package.rb

has_many :deals
Run Code Online (Sandbox Code Playgroud)

Deal.rb

belongs_to package
Run Code Online (Sandbox Code Playgroud)

现在简单的问题是我希望获得交易数量不止一个的所有包裹.这样做的最佳方法是什么?where(:available_for_purchase => true)self.deals.count > 0

(package.rb)

  class << self
    def available
      where(:available_for_purchase => true)
    end
  end
Run Code Online (Sandbox Code Playgroud)

Ant*_*rto 8

def self.available
  joins(:deals).where(:available_for_purchase => true).uniq
end
Run Code Online (Sandbox Code Playgroud)

加入deals协会将删除Packages没有任何交易... SQL正在这里努力工作.

然后使用:

Package.available
Run Code Online (Sandbox Code Playgroud)