2011-08-25 2 views
0

레일 방식과 MVC 디자인 패턴에 관해서는 몇 가지 기본 원리를 이해하려고합니다.기본 MVC - 다른 컨트롤러에서 모델 컨텐트 편집

내가 CMS를 만들고 있다고 가정 해 보겠습니다. 요청을 통해 올 때, 그것은 Pages 컨트롤러의 URL을 기준으로 결과를 확인하고 페이지를 제공한다

/Pages 
controller 
model 
view 

: 나는 다음 있습니다. 그것의 자신의 모델을 가지고해서는 안 (하는 Users 모델을 통해

Admin 
controller - index, edit actions 
view 

지금, 관리자 섹션은 인증 : 이제

,의 내가 이것에 대한 백엔드가 있다고 가정하자, 간단하게, 관리자 섹션을 넣어 적어도 나는 현재 필요성을 보지 못한다.) 사용자는 Pages 모델로 콘텐츠를 편집 할 수 있어야합니다. 이것은 명시 적으로 명시해야 할 필요가있는 것입니까? 컨트롤러 수준에서 렌더링하는 것이거나 컨트롤러에 AJAX 호출을 사용하여 렌더링해야합니까? 나는이 과정이 정확히 어떻게 작동 하는지를 파악하는데 어려움을 겪고있다.

페이지를 편집 할 수있는 것 외에도 블로그 모델과 비슷한 편집 문제가 있으므로 어떻게 수행되는지에 대한 통찰력을 얻을 수 있습니다.

편집 : 또는 동일한 (확장 된) 클래스를 사용 중이므로 과도하게 복잡합니까?

답변

0

나는 사용자 인증을 위해 Devise를 사용합니다. github의 Devise wiki에는 사용자 프로필에 간단한 관리 역할을 추가하는 방법에 대한 페이지가 있습니다. 또는 완벽한 승인 모델을 위해 CanCan을 사용할 수 있습니다. 어느 쪽이든, 사용자의 역할을 확인하는 데 도움이되는 도우미 메서드가 있습니다.

동일한 내용의 읽기 전용 및 편집 가능한보기가 필요한 CMS의 경우 is_admin을 사용하면됩니까? 새로 작성, 작성, 편집, 갱신, 삭제와 같은 컨트롤러 조치의 조건. 일반 사용자는 색인을 생성하고 보여줄 수 있습니다.

경로에 "admin"네임 스페이스를 사용하고 (라우팅에 대한 레일스 가이드 확인) 모든 관리 작업을 하나의 컨트롤러에두고 인덱스를두고 기본 컨트롤러에 표시 한 다음 사용자에게 before_filter를 사용할 수 있습니다 관리자는 코드를 좀 더 깨끗하게 유지해야합니다.

뷰 템플릿도 is_admin을 사용할 수 있습니까? (또는 유사한) 도우미 메서드를 사용하여 특정 기능/링크 등을 노출합니다.

+0

통찰력을 주셔서 감사합니다. 나는 개념에 대해 이해하고 있다고 생각하지만, 확실하지 않은 것은 is_admin과 같은 것이다. 조건 - 사용자 모델에 의해 결정됩니다. 다른 컨트롤러가 어떻게 해당 모델에 액세스합니까? 마술인가? :) – userrrrr

관련 문제