태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Ruby on Rails - Controller의 단위

Tech 2007.08.17 02:45
연관된 이전 글

이전에 모델(테이블?)에 대한 CRUD인터페이스를 기반으로 하는 Model-Wrapper스러운 컨트롤러에 대해 이건 아니야! 라면서 툴툴거린 적이 있다. 컨트롤러는 어떤 단위로 만들어져야 하는가. user라는 모델과 user 라는 컨트롤러가 있어서 가입/로그인/정보수정/개인화페이지 등 user 모델이 주가 되는 페이지는 모두 user 컨트롤러에 붙는 것인가? 왠지 이건 아닌 것 같다... 컨트롤러는 서비스의 구조다.

만들려는 웹 서비스의 사이트맵을 한번 그려보자. 트리 구조로 그리면서 가능한한 모든 페이지를 다 포함시키자. 웹 페이지가 될 녀석들은 가능한 한 Leaf node로 내린다. 그려놓고 보면 흐름이 있거나, 밀접하게 연관되어 있는 페이지들을 묶어 서브 트리를 구성할 수 있다. 이 서브트리의 루트는 자기 아래쪽에 있는 있는 페이지들에 대해 일종의 초기화면 역할을 할 수 있는 녀석이니 적당한 녀석을 골라 올리거나 아니면 새로 만든다. 자, 이런 식으로 트리 구조가 다 그려졌으면 초기화면인 Root node와 액션과 1:1 로 연결될 Leaf node를 제외하고 나서 나머지 node를 가지고 컨트롤러를 찍자. 찍은 녀석이 웹 페이지를 가진다면 그것이 컨트롤러의 index가 되고, 웹 페이지를 가지지 않아도 Leaf가 아닌 이상 상관은 없다. 어느 정도 Depth에 있는 노드를 컨트롤러로 정할지는 만들 웹 서비스에 따라 그때그때 다를 수 있다. 나름대로 정한 규칙이 있다면,

컨트롤러는 다른 컨트롤러를 부모나 자식으로 가지지 않는다.
컨트롤러는 자신을 루트로 하는 서브트리의 노드들(만)을 액션으로 가진다.
컨트롤러와 Leaf node 사이에 있는 Node는 서브트리에 있는 액션들의 이름에 Prefix가 된다.

정도가 되겠다. 꽤 쓸만한 방법인듯 하다. 너무 직관에만 의존하면 위험하니 적절한 참고나 가이드라인 정도로 삼으면 괜찮을 듯 하다.

실례로 사용할 만한 그림을 그려놓고 싶지만, 너무 귀찮으므로 나중에 포스팅하고 링크로 연결시켜 놓겠다.

'Tech' 카테고리의 다른 글

sena, the most powerful machine in the universe!  (6) 2007.08.31
svn relocate/tunneling  (0) 2007.08.31
Ruby on Rails - Controller의 단위  (5) 2007.08.17
실명인증  (5) 2007.07.02
지름: Ferret short cuts (O'reilly), PDF  (0) 2007.06.08
Web - 데이터를 어디에 저장하지?  (2) 2007.05.02
Trackbacks 0 : Comments 5
  1. Favicon of http://www.iwonny.net 워니 2007.08.17 09:02 Modify/Delete Reply

    그림그림!!! ㅎㅎ
    좋은글 감사합니다~ 다음 포스팅 열심히 기다릴게요 ㅋㅋ

  2. 얼음공주 2007.08.21 15:17 Modify/Delete Reply

    블로그 구경잘 하였습니다. 블로그에 필요한 동영상, boom4u.net 도 구경 오세요~~

  3. Favicon of http://24337.ccgenevois.com/clfrance.php christian louboutin 2013.07.11 09:25 Modify/Delete Reply

    희미한 달빛이 샘물 위에 떠있으면,나는 너를 생각한다.

Write a comment