2015-07-10 69 views
0

所以,我接下来的4种型号:如何使查找回报率与递归查询像CakePHP的

class Payment < ActiveRecord::Base 
    has_many :orders 
end 

class Order < ActiveRecord::Base 
    has_many :folders 
    belongs_to :payment 
end 

class Folder < ActiveRecord::Base 
    has_many :documents 
    belongs_to :order 
end 

class Document < ActiveRecord::Base 
    belongs_to :folder 
end 

怎样才能使一个支付的查找和检索所有与该付款订单以及这些订单的所有文件夹以及这些文件夹的所有文件。在CakePHP设置参数递归是足够的,但在RoR我不知道该怎么做,我必须使用宝石?或者有其他名字?

+0

你试过'Payment.find(ID).orders' – Cyzanfar

+0

呀Cyzanfar我已经尝试,但只找回订单我想要所有的付款与订单和文件夹和文件。 –

回答

2

您可以使用.includes()多个嵌套模型,是这样的:

Payment.includes({orders: [{folders: :documents}]}).find(...)

+0

谢谢你的回答埃里克,完美​​的作品 –

+0

这也是查找你的关联的快速方法,我们称之为[渴望加载](http://guides.rubyonrails.org/active_record_querying.html#eager-loading- associations)这有助于避免** N + 1个查询** – Cyzanfar