私はMongoidとRails3を使用しており、次の単一テーブル継承があります。
class Post
include Mongoid::Document
field :title, type: String
field :content, type: String
end
Postから継承されたモデル「Article」が1つあります。
class Article < Post
field :source, type: String
end
私はSTIを試す初心者です。「1つのコントローラー」がベースモデルと継承モデルに適した設計であることを学びました。だから私はこのようなPostsControllerを持っています
class PostsController < ApplicationController
def index
@type = param[:type] # type is passed from the route.rb
@posts = Post.where(_type: @type)
...
したがって、@typeが「Article」として指定されている場合、@postsには「Article」タイプの投稿のみが含まれます。これは記事ビューでうまく機能します。記事のみが表示され、他の種類の投稿は表示されません。
ただし、投稿ビューでは、投稿と記事の両方が表示されます。
投稿ビューに記事を表示したくない-実際には、ビューに表示されるベースモデルの投稿のみが必要です。ベースコントローラーの継承モデルからアイテムを除外する方法はありますか?
つまり、ベースモデルからのみアイテムを見つけるにはどうすればよいですか?