名前付きルート
単一テーブル継承を使ったときに、継承元のPerson用のControllerを、継承したManagerやEmployeeの処理でも使い回そうとしてエラーになっていた件は、ScaffoldのViewで名前付きルートを使っていることに関連がありました。名前付きルート自体、今回調べていて初めて知ったのですが...config/routes.rbに記述したルートの設定に応じて、使える様になるヘルパーメソッドのことの様です。
例えば、scaffoldを作成すると、config/routes.rbに以下のような記述がされますが、
ActionController::Routing::Routes.draw do |map| map.resources :people # ...省略
この場合、以下のようなヘルパーメソッドをlink_toなどで使えるようになります。
- people_path
- people_url
- edit_person
- new_person
また、Viewでは以下のようなヘルパーメソッドの呼び出しの記述があり、
<%= link_to 'Show', person %>
personがManagerクラスのインスタンスの場合には、最終的にmanager_pathというヘルパーメソッドが呼び出そうとするのですが、routes.rbには、Managerについての記述はないので、エラーなっていたようです。とりあえず、linke_toやredirect_toを呼び出す際に、Modelのインスタンスではなく、actionなどを指定すればよいみたいです。
Railsはまだまだわからないことが多いです。特にroutes.rbの記述は難しいですね。URLを自在に操れるようになる日は遠そうです。