2012-04-18 74 views
1

好加载因此,我有以下型号我怎样做预先加载与包括但限幅最新使用的范围,包括参数

Class Company < ActiveRecord::Base 
has_many customers 
active? 

Class Customers < ActiveRecord::Base 
belongs_to :Company 
has_one :account 

Class Account < ActiveRecord::Base 
belongs_to :Customer 
has_many :invoices 

Class Invoice < ActiveRecord::Base 
belongs_to :account 
has_many :line_items 
invoice_date 

Class LineItem < ActiveRecord::Base 
belongs_to:Invoice 

我需要做的就是找回什么: 谁拥有客户所有活动的公司有的发票为这些客户

这里是擦: 由于每个客户都能拥有我只想回报发票数额巨大让说的发票4月1日2012年

什么I W ant要做的就是使用includes与在模型上设置的范围或方法相结合来限制返回的发票金额。

我的模型将包含范围:

Class Invoice < ActiveRecord::Base 
belongs_to :account 
scope :for_the_day_of, lambda{|invoice_date|where('invoices.invoice_date',invoice_date } 

所以,现在我可以写这样的事:

invoice = Invoice.for_the_day_of(Date.today).first 

我真的想用它做的是一样的东西:

comapanies = Company.where(:active => true) 
.includes(:merchants => [:billing_account => 
[:invoices => for_the_day_of(Date.today) => :invoice_line_items]]) 

我不知道这是可能的积极记录或者我只是想着问题不对

任何帮助将不胜感激。

感谢

回答

1

如果我理解正确的,你需要的是你从另一个模型和一些子查询功能的访问范围。 我为此建议使用gem Squeel。这是一个伟大的宝石,它扩展了活动记录功能。

+0

是啊,看起来像我在寻找感谢 – Anthony 2012-04-23 01:19:40