我使用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将仅包含“文章”类型的帖子。这在文章视图中很有效:只会显示文章,而不会显示其他类型的帖子。
但是,在帖子视图中,它会显示帖子和文章。
我不想在我的帖子视图中显示文章 - 实际上,我只想在视图中显示的基本模型中发布帖子。有没有办法从基础控制器中的继承模型中排除项目?
换句话说,我怎样才能从基本模型中找到项目?
答案 0 :(得分:0)
我刚想通了我可以在控制器中使用以下内容:
@post = Post.where(_type: "Post")
这是正确的方法吗?