2012-05-06 3 views
0

레일을 처음 사용하고 특정 애플리케이션을 가장 잘 라우팅하는 방법에 대한 질문이 있습니다. 레거시 데이터베이스를 사용하여 스키마가 이미 설정되어 있고 약간 복잡합니다. 앱의 레이아웃에는 '사용자'가 포함 된 상단 네비게이션 바가 포함되어 있으며, 특정 '사용자'의 경우 다양한 형태를 표시/편집 할 수있는 또 다른 탐색 바가 있습니다. 예를 들어 특정 '사용자'가 쿼리되면 '일반 정보'및 '계정 정보'에 대한 별도의 양식이 있습니다.특정 설정을위한 레일 경로

지금 설치 프로그램은 최상위 레벨에 해당하는 'users'네임 스페이스를 갖는 것입니다 네비게이션과 네임 스페이스에는 네비게이션 수준 인 '일반', '프로젝트'등이 있습니다.이 설정을 사용하면 두 번째 수준의 네비게이션 수준에서 선택한 각 양식에 약간의 차이가있는 자체 컨트롤러가 있습니다. ID가이 합리적인 보이는가에 '사용자'

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

을 속하거나 사람이 중첩 된 탐색 설정을 처리하는 방법에 대한 다른 아이디어가 않습니다

namespace :users do 
    resources :general, :project 
    end 

이 어디 나 다음 URL을 가질 수 있습니다 RESTful 방식으로? 레거시 데이터베이스는 '일반', '계정'모델 또는 DB 테이블이 없다는 점에서 복잡합니다. 각 양식에 대해 '사용자'모델과 연관성이있는 여러 모델/표를 가져와야합니다. '일반적인'모델을 가지고 있지 않은 동안 '일반'컨트롤러를 갖는 것은 나 같은 것을 방해하는 것과 같은 매우 난간처럼 보이지 않습니다.

+0

이것은 어두운 곳에서 촬영 한 것이지만 "일반"속성이 CRUDed 될 때 다양한 기본 테이블에서 작업을 관리하는 "일반"모델 (ActiveRecord :: Base의 하위 클래스가 아님)을 만든 것으로 간주 했습니까? 기본 테이블은 ActiveRecord :: Base에서 상속 받아서 영속성을 관리 할 수 ​​있으며, 일반 모델은 db의 레코드를 유지 관리합니다. 일반 컨트롤러는 일반 클래스의 인스턴스를 AR 모델과 비슷하게 처리하지만, CRUD하면 모델 로직이 db에서 실제로 일어나고있는 것을 관리하고 관리합니다. –

답변

0

당신은 올바른 방향으로 가고 있습니다 만, 네임 스페이스는 찾고있는 어소시에이션을 유지하는 데 도움이되지 않습니다. 대신,이 시도 것 : 나는 또한 Rails routing guide에서 보라는 권유를 줄

resources :users do 
    resources :general, :project 
end 

.

+0

제안 해 주셔서 감사합니다. 그러나 문제는 레거시 데이터베이스 때문에 부분적으로 일반 및 프로젝트 모델이 없다는 것입니다. '일반'양식은 한 모델/테이블에 저장된 주소 정보와 다른 모델/전화 정보를 포함 할 수 있습니다. –