Могу ли я сделать STI и использовать полиморфные помощники пути?

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

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

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

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

parentclasstypename_comments_path

Ответ 1

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

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

@account.is_a? LoginAccount? #=> true

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

form_for [@account.becomes(Account), @comment] do |f|
  ...