如何使用 sunspot 仅搜索已批准的文章

How to search only approved articles using sunspot

我有一个具有默认状态 "Awaiting" 的文章模型,在我的文章模型中我有:

  scope :awaiting, -> {where(status: "Awaiting") }
  scope :approved, -> {where(status: "Approved") }
  scope :rejected, -> {where(status: "Rejected")}

为了只允许搜索已批准的文章,我的文章模型中有这个:

searchable do
  text :title
  string :status
end

这是我的搜索控制器

  def search

    @search = Sunspot.search(Article) do
        fulltext params[:query]
        with(:status, "Approved")
        order_by :score, :desc
        paginate(page: params[:page], per_page: 10)

    end

    @articles = @search.results

    respond_to do |format|
      format.html { render :action => "search" }
    end
  end

但是当我尝试搜索任何内容时,这将没有结果,这是为什么?

如果您的模型在添加 Sunspot 之前已经存在,您将需要使用 bundle exec rake sunspot:solr:reindex 创建索引。

以后的更新应该会自动添加到索引中。