这是此问题的后续行动has_many :through usage, simple, beginner question
基本上,我想在我的Invoice类中有一个函数来获取所有LineItem但是以下内容不起作用:
这样:
> @i=Invoice.find(1) # good
> @i.products # good works well
> @i.products.line_items # not working, undefined method line_items
根据前一个问题中的关联,这应该有效吗?如果我直接访问产品,我认为应该这样做:
> @p=Product.find(1) # good
> @p.line_items # also good
如何根据此型号取回所有订单项?
THX
答案 0 :(得分:3)
假设您有以下型号:
class Invoice
has_many :line_items
has_many :products, :through => :line_items
end
class LineItems
belongs_to :invoice
belongs_to :product
end
class Product
has_many :line_items
has_many :invoices, :through => :line_items
end
您可以执行以下操作:
@ i = Invoice.find(1)#good
@ i.products#good good well
@ i.line_items#与发票关联的所有line_items。
答案 1 :(得分:1)
@i.products
会返回Product
的集合。您需要收集所有订单项:
@i.products.collect(&:line_items)