我可以做STI并仍然使用多态路径助手吗?

时间:2009-03-03 02:23:55

标签: ruby-on-rails ruby

我使用的是单表继承,并对所有子类都有注释。我只为所有不同的STI类型使用1个控制器。当form_for帮助程序为子类型生成URL时,它会尝试使用子类型的帮助程序,但我希望它使用父类的帮助程序。

这是我得到的错误:

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

它应该使用的路径助手是

parentclasstypename_comments_path

1 个答案:

答案 0 :(得分:57)

是的,只需使用AR::Base#becomes

假设您的基类为Account,其子类为GuestAccountLoginAccount

@account.is_a? LoginAccount? #=> true

然后你可以做一个

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