Контроллеры Rails STI - PullRequest
       4

Контроллеры Rails STI

2 голосов
/ 27 марта 2009

У меня есть сайт Rails, использующий STI со следующими классами:

Страницы

Домашняя страница <Страницы </p>

LandingPage <Страницы </p>

На внешнем интерфейсе все запросы обрабатываются контроллером Pages. Однако, если обнаруженный объект на самом деле является экземпляром LandingPage, я бы хотел вызвать действие на контроллере LandingPages (например, метод show в дочерних классах контроллеров извлечет некоторые конкретные поиски, которые не всегда актуальны).

Любые предложения о том, как лучше всего это сделать?

Спасибо

Ответы [ 2 ]

1 голос
/ 27 марта 2009

Это звучит немного похоже на то, что вы омрачаете различие MVC, но это должно быть выполнимо.

Я бы добавил серию тестов для модели Pages (например, supports_buzzbar_foo? или wiggums_itemization_controller, затем переопределил бы их в зависимости от ситуации в подклассах) и использовал их в представлении для условной генерации соответствующих ссылок на методы контроллера. ты хочешь.

Таким образом, вы заставляете каждую часть (примерно) выполнять свою работу.

0 голосов
/ 31 марта 2009

Решение Маркуса должно работать. Вы также можете сохранить свои ссылки в представлениях, указывающих на страницы, оценить входящий объект и затем перенаправить на соответствующий контроллер на основе класса объекта.

Однако, если вы не выполняете совершенно разные действия с каждым типом объекта, вы получите дублирующий код в ваших контроллерах. Поэтому вам лучше придерживаться контроллера Pages и просто добавить несколько методов, которые обрабатывают дополнительные поиски, необходимые для этого объекта.

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