2012-11-22 92 views
1

我有一個具有國家,客戶端和訂單的Rails應用程序。訂單屬於客戶,客戶屬於國家,客戶有許多訂單,國家有許多客戶。查找子對象滿足條件的父對象數組

class Client < ActiveRecord::Base 
    has_many :orders 
    belongs_to :country 
end 
class Country < ActiveRecord::Base 
    has many :clients 
end 
class Order < ActiveRecord::Base 
    attr_accessible :total 
    belongs_to :client 
end 

我試圖找出以最快的方式,在一個控制器,從給定的國家誰擁有至少一個訂貨會一定條件的客戶的數組。例如:來自西班牙的客戶至少有一個訂單總額超過100美元。

我想我應該使用連接,但不知道如何去做。

謝謝

回答

1

你只需要加入:orders

c = Country.find(id_for_spain) 
filtered_clients = c.clients.joins(:orders).where("orders.total > ?", 100) 
+0

非常感謝,比我之前的循環更清潔。 – Nicolas

+0

哈,* *比循環快得多。 – deefour

相關問題