: has_many: через ассоциации два уровня глубоко - PullRequest
7 голосов
/ 09 марта 2011
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

Я пытаюсь получить ассоциацию из Project has_many: invoices,: through =>: tasks

Когда я попробовал это, я получил:

Invalidмакрос отражения источника: has_many: through для has_many: invoices,: through =>: tasks.Используйте: source, чтобы указать исходное отражение.

Я немного растерялся, если это возможно, и если да, то как использовать: источник правильно

Ответы [ 2 ]

5 голосов
/ 21 октября 2011

Райан прав, это поддерживается с Rails 3.1.Извлечено из заметок о выпуске:

Ассоциации с опцией: through теперь могут использовать любую ассоциацию в качестве сквозной или исходной ассоциации, включая другие ассоциации, имеющие параметр: through и has_and_belongs_to_many.1005 * Источник: http://guides.rubyonrails.org/3_1_release_notes.html

3 голосов
/ 09 марта 2011

Вы не можете сделать это в Rails 3.0. В Rails 3.1 я думаю, что это будет возможно.

Вместо этого вы должны использовать плагин nested_has_many_through: http://github.com/ianwhite/nested_has_many_through

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...