在Mongoid中,如何在基本控制器中排除继承的模型对象?

时间:2012-10-11 00:31:32

标签: inheritance mongoid

我使用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将仅包含“文章”类型的帖子。这在文章视图中很有效:只会显示文章,而不会显示其他类型的帖子。

但是,在帖子视图中,它会显示帖子和文章。

我不想在我的帖子视图中显示文章 - 实际上,我只想在视图中显示的基本模型中发布帖子。有没有办法从基础控制器中的继承模型中排除项目?

换句话说,我怎样才能从基本模型中找到项目?

1 个答案:

答案 0 :(得分:0)

我刚想通了我可以在控制器中使用以下内容:

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

这是正确的方法吗?