2012-03-26 18 views
1

나는 Post 모델을 가지고 있습니다. Post은 Question, Answer 또는 Comment 유형 일 수 있습니다 (StackOverflow 구조와 유사). 지금 컨트롤러는 CRUD에 대한 요청을 어떤 유형의 Post에도 처리합니다. 제어기가 Rails에서 얇아 야 할 필요가 있고 컨트롤러가 어떤 동작에서도 case 문 (Post 유형 선택 및 처리) 때문에이 작업을 따르지 않는 것으로 보이는 규칙이 있습니다. 그래서 내 질문 : Post 컨트롤러를 Question, AnswerComment으로 나누어 재구성하거나 (더 좋게) 나누는 방법이 있습니까? 공통적으로 Post 뷰를 사용합니까? 모든 링크/예제가 인정 될 것입니다.레일 하나의 모델 - 많은 컨트롤러

답변

5

당신은 서로 하나의 컨트롤러를 상속 할 수 있습니다 :

하나의 일반적인 컨트롤러 : 각 컨트롤러에서 다음

class PostsController < ApplicationController 

    #here all the methods common for all types, if any 
    def new 
    @post = Post.new(:email => current_user.try(:email)) 
    end 
    ... 

end 

:

class AnswersController < PostsController 

    self.model_class = Post 

    # here all specific methods 
    def create 
    ... 
    end 
end 

그리고 모든 뷰는 폴더에 유지할 수 있습니다 posts, 또는 자신의 폴더와 다른 폴더

+0

감사합니다. acce 점액 솔루션 –