Using STI path with same controller

ruby-on-rails, single-table-inheritance

Solution

I know this is kind of late, but maybe this will be helpful for other people. You want to use the `becomes` method. Let's say you are editing `@list` which is an instance of `RegularList`. Then do

form_for @list.becomes(List)

Problem

I am using STI and am wondering, do I have to have a separate controller for each model? I have a situation where I only use the create and edit actions for one model in the STI relationship, but I get an 'undefined method' error if I try to do a form for. More specifically, I have two models that inherit from List: ``` class RegularList < List class OtherList < List ``` and I have a lists controller that handles these actions, but I only create new models with RegularList using forms. i.e. the only situation where I use a form_for to create a new List object is with RegularList. What I would like to do is something like: ``` class ListsController < ApplicationController def new @list = RegularList.new end ``` otherwise the route for creating a new list looks like regular_list/new but I would like it to just be list/new. Thoughts? EDIT: The problem is when I use the above code, I get an 'undefined method' error. My view looks like this: ... So it seems that there is some problem with using a RegularList object in the Lists controller and this is the main problem I am trying to address. Sorry, I realize that was not the clearest explanation.

Original source