2012-10-11 4 views
0

내가 Mongoid 및 레일 (3)을 사용하고, 나는 다음과 같은 단일 테이블 상속이 있습니다Mongoid에서 기본 컨트롤러에서 상속 된 모델 객체를 제외하는 방법은 무엇입니까?

class Article < Post 
    field :source, type: String 
end 

내가 STI를 시도하는 초보자입니다 :

class Post 
    include Mongoid::Document 
    field :title, type: String 
    field :content, type: String 
end 

포스트로부터 상속 한 모델 '기사'가있다 . 나는 '하나의 컨트롤러'가 기본 모델과 상속 된 모델을위한 좋은 디자인이라는 것을 알게되었습니다. 그래서 '기사', @posts는 게시물의 '제'유형이 포함되므로 @type을 지정 그렇다면이

class PostsController < ApplicationController 
    def index 
    @type = param[:type] # type is passed from the route.rb 
    @posts = Post.where(_type: @type) 

    ... 

같이가 PostsController 있습니다. 기사보기에서 잘 작동하면 기사 만 표시되지만 다른 종류의 소식은 표시되지 않습니다.

하지만 소식보기에는 소식과 기사가 모두 표시됩니다.

내 게시물보기에 기사를 표시하고 싶지 않습니다. 실제로는 기본 모델의 게시물 만보기에 표시하고 싶습니다. 기본 컨트롤러에서 상속 된 모델의 항목을 제외하는 방법이 있습니까?

즉, 기본 모델에서만 항목을 어떻게 찾을 수 있습니까?

답변

0

난 그냥 내가 컨트롤러에서 다음을 사용할 수 있습니다 알아 냈 : 갈 올바른 방법

@post = Post.where(_type: "Post") 

인가를?

+0

예, 그렇지 않으면 모든 것을 반환합니다. default_scope를 (_type : "Post")에 추가하여 게시에 도움이되는지 확인할 수 있습니다. – Roman

관련 문제