Программно создать контроллер в Rails - PullRequest
2 голосов
/ 26 марта 2010

Какой лучший способ динамически создать контроллер в Rails.

У меня есть класс, который должен генерировать группу контроллеров, которые наследуются от него. Я мог бы просто создать группу файлов в / app / controllers, но все они были бы в основном пустыми файлами. Должен быть способ генерировать эти классы динамически и обрабатывать их как другие контроллеры в Rails, например. правильно перезагружен в режиме разработки.

Я попытался поместить это в конфиг / инициализатор:

FL.contact_types.each do |contact_type|
  controller_name = "#{contact_type.pluralize}Controller"
  Object.const_set(controller_name.to_sym, Class.new(ContactsController)) unless Object.const_defined?(controller_name.to_sym)
end

Это сработало, но я столкнулся с проблемой зависимости / перезагрузки и получил «Копия AuthenticatedSystem была удалена из дерева модулей, но все еще активна», поскольку ContactsController наследуется от ApplicationController, который включает AuthenticatedSystem.

Является ли создание группы пустых файлов действительно лучшим решением?

1 Ответ

2 голосов
/ 26 марта 2010

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

маршрут может быть использован для передачи типа:

map.route "/:type_of_contact/:action/:id/, {:controller => :contact_type}

теперь во всех действиях в параметрах у вас есть ключ: type_of_contact для управления вашей системой.

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

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