:has_many:通过两个层次的关联

时间:2011-03-09 01:35:09

标签: ruby-on-rails-3 activerecord

Project
has_many :tasks

Task
has_many :invoices, :through => :line_items
has_many :line_items

LineItems
belongs_to :invoice
belongs_to :task

Invoice
has_many :tasks, :through=> :line_item
has_many :line_items

我正在尝试从项目has_many获取关联:发票,:through => :任务

当我尝试时,我得到:

  

源反射宏无效:has_many:for for has_many:invoices,:through => :任务。使用:source指定源反射。

如果有可能,我有点不知所措,如果是这样,如何使用:来源正确

2 个答案:

答案 0 :(得分:5)

Ryan是对的,这是Rails 3.1支持的。摘自发行说明:

与a:through选项的关联现在可以使用任何关联作为通关或源关联,包括具有:through选项和has_and_belongs_to_many关联的其他关联。

Src:http://guides.rubyonrails.org/3_1_release_notes.html

答案 1 :(得分:3)

你不能在Rails 3.0中这样做。在Rails 3.1中,我认为这是可能的。

相反,您必须使用nested_has_many_through插件:http://github.com/ianwhite/nested_has_many_through