рельсы перенаправляют на шаблон суперкласса, если шаблон отсутствует для некоторого подкласса - PullRequest
3 голосов
/ 17 ноября 2010

Я использую наследование одной таблицы для проекта рельсов. И мне было интересно, можно ли разделить функциональность некоторых общих функций между подклассами, реализовав их в суперклассе.

Можно ли также перерабатывать представления суперкласса? Или я должен написать новые представления для общих функций? Это не было бы очень СУХОЙ. Каковы были СУХОЙ подход? Я должен отредактировать routes.rb или есть другой способ динамически выполнить это?

Лучший, E.

1 Ответ

0 голосов
/ 03 мая 2011

Во-первых, вы можете определенно разделить функциональность между подклассами, реализовав на уровне суперкласса - это одна из самых больших выгод для STI.

Что касается вопроса о представлении: я предполагаю, что мы говорим о создании подкласса модели, а не контроллера. В этом случае один контроллер (с обычными представлениями) для основной модели будет нормально работать для всех подклассов. Есть некоторые немного хитрые проблемы, когда дело доходит до форм и создания / редактирования. В частности, вам нужно будет извлечь подкласс модели из параметров и добавить его после обновления всего остального. Например:

def create
  citation_class = params[:citation].try(:delete, :type)
  @citation = citations.new(params[:citation])
  @citation.type = citation_class
  flash[:notice] = 'Citation was successfully created.' if @citation.save

  respond_with @citation
end
...