0

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

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

我不希望文章显示在我的帖子视图中——实际上,我只希望来自基本模型的帖子显示在视图中。有没有办法从基本控制器的继承模型中排除项目?

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

4

1 回答 1

0

我刚刚发现我可以在控制器中使用以下内容:

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

这是正确的方法吗?

于 2012-10-11T17:16:18.587 回答