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

我需要做的是检索:拥有客户的所有活跃公司以及这些客户的一些发票

问题是:由于每个客户都可以拥有大量发票,我只想退回 2012 年 4 月 1 日的发票。

我想要做的是使用包括结合模型上设置的范围或方法来限制返回的发票数量。

我的模型将包含范围:

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]])

我不知道这在活动记录中是否可行,或者我只是想错了问题

任何帮助将不胜感激。

谢谢

4

1 回答 1

1

如果我正确理解,您需要可以从另一个模型和一些子查询功能访问的范围。我正在使用 gem Squeel来提出这个建议。这是一个很棒的宝石,它扩展了 Active Records 的功能。

于 2012-04-20T07:23:19.973 回答