2010-11-29 3 views
1

더 작은 "정적"페이지 유형 프로젝트 (예 : 친구를위한 작은 사이트)를 처리하기위한 간단한 간단한 CMS를 작성하는 중입니다. 나는 내가 추가하고 싶은 다른 "페이지 유형"을 가지고있다. 이전에 Coldfusion에서 비슷한 것을 만들었습니다. 이런 식으로 뭔가를 보았다 :Ruby (RoR) 앱에서 콘텐츠를 구성하는 방법은 무엇입니까?

테이블 콘텐츠 _ :

content_type_code varchar(10) 
content_type_name 

테이블 내용 :

content_id 
content_type_code varchar(10) 
content_name 
content_desc 
content_url 

나는 "사진", "블로그"또는라는 콘텐츠 형식과 내용이 추가 될 때마다 만들 것 content_type_code가 할당됩니다. 그런 다음/blog/content_type_code가 "blog"인 모든 콘텐츠를 쿼리합니다.

이제 Ruby/RoR을 사용하고 있습니다. 일에 대해 다르게 생각하려고합니다. awesome_nested_set (https://github.com/collectiveidea/awesome_nested_set)을 사용하여 중첩 페이지를 사용하는 것이 더 나은 방법이라고 생각했습니다. 하지만 이것이 최선의 해결책인지는 확실치 않습니다.

그런 다음 "블로그"라는 페이지를 만들고 그 많은 페이지를 추가 할 수있었습니다. 그래서 본질적으로 최상위 레벨은 이전 예제의 "content_type"대신 사용됩니다.

누군가가 올바른 방법으로 나를 올바른 방향으로 인도 할 수 있습니까? 나는 올바른 방향으로 걷어차기를 바라는 뉴비 다. 그들은 사진 /에서 ("사진"내용을 표시하는 경우

편집

가 나는 내용의 서로 다른 "종류"사이를 전환 할 수있는 유일한 진짜 레이아웃이 될 것이라는 점을 추가한다// blog /에서 "blog"콘텐츠).

+0

모든 칼럼에 테이블 이름을 접두사로 붙이는 것은 레일스 커뮤니티에서보기 흉하고 눈살을 찌푸리게한다. 테이블 별칭은 이유가 있기 때문에 사용합니다. – ryeguy

+1

테이블 예제는 Coldfusion에 내장 된 이전 응용 프로그램의 예제입니다. – jyoseph

답변

2

내가 요점을 되풀이하려고 :

  1. 당신은 CMS를 구축하려는
  2. 당신의 CMS는
  3. 웹 사이트의 콘텐츠 구성되어 하나의 웹 사이트를 관리
  4. 내용의 differenti 종류가 있습니다 , 모든 유형의 콘텐츠가 고유 한 동작을한다고 가정합니다.
  5. 내용이 트리로 구성되어 있습니다.

다음은 내가 제안하는 계획입니다.

  1. 콘텐츠 리소스를 만듭니다.
  2. 새로운 모델에 대한 유효성 검사 추가
  3. 유효성 검사에 대한 몇 가지 단위 테스트를 작성하십시오 (매우 유용하지는 않지만 단지 어떻게 작동하는지 보시기 바랍니다).)
  4. 콘텐츠를 구현하는 편집, 주위의 컨텐츠를 이동,
  5. 이제 그 시간을 하나의 컨텐츠를 awesome_nested_set를 설치하고 그것을 아주 쉽게 새로운 콘텐츠를 만들 수 있도록 그것은 UI에 모델
  6. 일을 작업하기 위해 관리 유형; STI은 레일 방식이지만, 나는 당신에게 경고해야한다. 그것은 정말로 힘들 수있다.. 1, 2, 3, 5를 반복하여 사진 및 블로그 포스트 용 새 모델을 만드십시오.

일단 설치하면 구현할 수있는 아이디어가 많아집니다. 재밌게 보내라 :)

+0

신난다. STI에 대해 처음 들어 본 적이있다. 나는 그것이 각 클래스의 속성들 사이에 실제로 차이가 없기 때문에 그것이 갈 방법이 될 것이라고 생각한다. 가장 큰 차이점은 표시 방법입니다. 예를 들어 모든 "사진"콘텐츠는 "/ photos /"에서 액세스 할 수 있고 diff 레이아웃이 있어야합니다. "/ blog /"에서 액세스하고 diff 레이아웃이있는 모든 블로그 내용 – jyoseph

+0

routes.rb에 새로운 경로를 그리고 일부 사용자 정의 작업을 작성하면 트릭을 수행합니다. – lbz

+0

바로 대답에 대한 철저한 답변 주셔서 감사합니다. 당신이 준 STI 링크는 또한 실제로 도움이 된 다른 기사에 링크되어 있습니다. 고마워요! – jyoseph

1

content_type 대신 "사진"또는 "블로그"와 같은 선택 페이지에서 모델을 선택하고 해당 선택에 따라 편집 페이지를로드 할 수 있습니다. 그래서 사용자는 blog/new로 리디렉션되는 새로운 'blog'-entry 또는 photo/new의'photo '를 원합니다. 유용성과 제어 백엔드의 관점에서 볼 때 가장 쉬운 방법이며 데이터베이스에 중복 데이터 (예 : 블로그 유형에 필요없는 빈 사진 URL)가 없습니다.

관련 문제