Модель наследования и модель конкретного кода в контроллере / представлении - PullRequest
1 голос
/ 03 сентября 2011

Я использую однотабличное наследование Rails с контентом суперкласса и рядом подклассов (таких как Article, Comment и т. Д.). Я пытаюсь обойтись без одного контроллера, и я таким образом настроил маршруты:

resources :contents
resources :articles, :controller => "contents"
resources :comments, :controller => "contents"

Таким образом, /articles/new перенаправляется на contents#new, что, по-видимому, является тем, что я хочу.

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

Просмотр params для /articles/new в общем контроллере дает {"action"=>"new", "controller"=>"contents"}, что, очевидно, делаетне предоставьте нужную мне информацию.

Либо ответ действительно очевиден, либо я неправильно использую наследование модели.Который из них?:)

1 Ответ

0 голосов
/ 03 сентября 2011

Вы можете извлечь часть интересующего вас пути запроса следующим образом

path = request.fullpath[%r{^/(articles|comments)/}, 1] # articles or comments

Получив его, вы можете получить класс модели следующим образом:

model_class = path.classify.constantize # Article or Comment

Bests

Ричард

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...