我使用 Mongoid 和 Rails 3,并且我有以下单表继承:
class Post
include Mongoid::Document
field :title, type: String
field :content, type: String
end
从 Post 继承了一个模型“文章”:
class Article < Post
field :source, type: String
end
我是尝试 STI 的新手。我了解到“一个控制器”对于基本模型和继承模型来说是一个很好的设计。所以我有这样的 PostsController
class PostsController < ApplicationController
def index
@type = param[:type] # type is passed from the route.rb
@posts = Post.where(_type: @type)
...
因此,如果@type 被指定为“文章”,@posts 将只包含“文章”类型的帖子。这在文章视图中效果很好:只会显示文章,而不会显示其他类型的帖子。
但是,在帖子视图中,它将同时显示帖子和文章。
我不希望文章显示在我的帖子视图中——实际上,我只希望来自基本模型的帖子显示在视图中。有没有办法从基本控制器的继承模型中排除项目?
换句话说,我怎样才能只从基本模型中找到项目?