Использование пути STI с одним контроллером

Я использую STI и задаюсь вопросом, должен ли я иметь отдельный контроллер для каждой модели? У меня есть ситуация, когда я использую только действия create и edit для одной модели в отношениях STI, но я получаю ошибку "undefined", если я пытаюсь сделать форму. В частности, у меня есть две модели, которые наследуются от List:

class RegularList < List
class OtherList < List

и у меня есть контроллер списков, который обрабатывает эти действия, но я только создаю новые модели с помощью RegularList, используя формы. то есть единственная ситуация, когда я использую form_for для создания нового объекта List с помощью RegularList. То, что я хотел бы сделать, это что-то вроде:

class ListsController < ApplicationController

def new
  @list = RegularList.new
end

в противном случае маршрут для создания нового списка выглядит как обычный_list/new, но я бы хотел, чтобы он просто был list/new. Мысли?

EDIT: Проблема в том, что когда я использую вышеуказанный код, я получаю ошибку "undefined". Мой вид выглядит следующим образом:

...

Похоже, что существует некоторая проблема с использованием объекта RegularList в контроллере List, и это основная проблема, которую я пытаюсь решить. Извините, я понимаю, что это не было самым ясным объяснением.

Ответ 1

Я знаю, что это немного поздно, но, возможно, это будет полезно для других людей. Вы хотите использовать метод becomes. Скажем, вы редактируете @list, который является экземпляром RegularList. Тогда do

form_for @list.becomes(List)

Ответ 2

Я использую STI и задаюсь вопросом, должен ли я иметь отдельный контроллер для каждой модели?

Нет, вы этого не делаете.