Могу ли я сделать 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|
...