我有以下型号:
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
答案 0 :(得分:-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
修改时间会发生变化。