Могу ли я сделать ИППП и все еще использовать помощников по полиморфному пути? - PullRequest
12 голосов
/ 03 марта 2009

Я использую Single Table Inheritance и у меня есть комментарии ко всем подклассам. Я использую только 1 контроллер для всех типов STI. Когда помощник form_for генерирует URL для подтипа, он пытается использовать помощника для подтипа, но я хочу, чтобы он использовал помощника для родителя.

Это ошибка, которую я получаю:

undefined method `subclasstypename_comments_path' for #<ActionView::Base:0x41ef27c>

Помощник пути, который он должен использовать, -

parentclasstypename_comments_path

1 Ответ

57 голосов
/ 03 марта 2009

Да, просто используйте AR::Base#becomes.

Скажите, что ваш базовый класс - Account, который подклассами равен GuestAccount и LoginAccount.

@account.is_a? LoginAccount? #=> true

Тогда вы можете просто сделать

form_for [@account.becomes(Account), @comment] do |f|
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...