1

OKだから私は次のモデルを持っています

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

私が正しく理解している場合は、別のモデルからアクセスできるスコープといくつかのサブクエリ機能が必要です。私はこの提案にgemsqueelを使用しています。これは、ActiveRecordsの機能を拡張する素晴らしい逸品です。

于 2012-04-20T07:23:19.973 に答える