0

私は次のモデルを持っています:

class Company
  # ...
  has_many :invoices
end

class Invoice
  # ...
  belongs_to :company
  has_many :items

  field :type, String

  scope :expense, where(type: 'expense')
  scope :income, where(type: 'income')
end

class Item
  # ...
  belongs_to :invoice
end

income問題は、特定の会社のすべてのアイテムを取得する方法です。

に似たものcompany.items.expense

4

1 に答える 1

-1

埋め込みリレーションを使用しても違いはありません。配列を返すため、呼び出しcompany.items.expenseは依然としてエラーを返します。company.items

次のようなことを試してください:

class Company
  #...
  def expenses
     self.invoices.where(type: 'expense')
  end

  def incomes
     self.invoices.where(type: 'income')
  end
end

company.expensesその後、とを呼び出すことができますcompany.incomes

使い方によっては、Item内部に埋め込むInvoiceか、別のコレクションとして残しておく方がよい場合があります。また、請求書を扱っているため、コールバックに注意し、必要に応じてカスケードすることを忘れないでInvoiceくださいItem

于 2012-08-22T20:30:03.540 に答える