2012-05-06 4 views
0

Я новичок в рельсах и задаюсь вопросом, как наилучшим образом маршрутизировать мое приложение. Я использую устаревшую базу данных, поэтому схема уже настроена и немного усложняет ситуацию. В макет приложения входит верхняя панель навигации, которая включает в себя «пользователей», а затем для конкретного «пользователя» есть еще одна панель навигации для отображения/редактирования различных форм. Например, когда запрашивается конкретный «пользователь», существуют отдельные формы для «общей информации» и «информации учетной записи» и т. Д.Рельсы маршрутов для конкретной установки

У меня есть сейчас, чтобы иметь пространство имен пользователей, соответствующее верхнему уровню навигации и в пространстве имен имеют второй уровень навигации: «общий», «проект» и т. д. При этой настройке каждая форма, выбранная со второго уровня навигации, имеет свой собственный контроллер, который кажется немного странным.

namespace :users do 
    resources :general, :project 
    end 

Это позволяет мне иметь следующие ссылки, где: идентификатор принадлежит к «пользователя»

/users/general/:id 
/users/general/:id/edit 
/users/account/:id 
/users/account/:id/edit 

Это кажется разумным и есть ли какие-либо другие идеи о том, как иметь дело с вложенной настройки навигации в RESTful способом? Унаследованная база данных усложняется тем, что у меня нет «общей», «учетной записи» модели или таблицы БД. Для каждой формы мне нужно вытащить из нескольких моделей/таблиц, имеющих ассоциации с «пользовательской» моделью. Наличие «общего» контроллера, не имея «общей» модели, не кажется очень рельсами, как то, что меня беспокоит.

+0

Это выстрел в темноте, но считаете ли вы создание «общей» модели (а не подкласса ActiveRecord :: Base) для управления операциями в разных базовых таблицах, когда «общие» атрибуты CRUDed? Базовые таблицы могут наследовать от ActiveRecord :: Base для управления сохранением, а общая модель будет манипулировать ими для ведения записей в db. Ваш общий контроллер затем рассматривает экземпляр общего класса более или менее как AR-модель, но когда вы CRUD, модельная логика запускает и управляет тем, что действительно происходит в db. –

ответ

0

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

resources :users do 
    resources :general, :project 
end 

Я также рекомендую взглянуть на Rails routing guide.

+0

Благодарим за предложение, но проблема в том, что у меня нет общих и проектных моделей частично из-за устаревшей базы данных. «Общая» форма может содержать адресную информацию, хранящуюся в одной модели/таблице, и информацию о телефоне в другой. –

Смежные вопросы