查找子节点满足条件的父对象数组

时间:2012-11-22 14:09:18

标签: ruby-on-rails

我有一个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美元。

我想我应该使用Joins,但不知道该怎么做。

谢谢

1 个答案:

答案 0 :(得分:1)

您只需加入:orders

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