Thinking Sphinx:当属性查询为空时如何返回任何属性

时间:2012-01-28 23:35:58

标签: ruby-on-rails thinking-sphinx

我有一个搜索表单,用户可以搜索文章内容并使用带有类别的选择框缩小范围内容。当类别参数为空时,它会搜索空白ID,但我想在这种情况下返回任何类别。是否可以配置Thinking Sphinx来实现这一点,还是必须在控制器上包含这个条件?

文章模型:

class Article < ActiveRecord::Base
 belongs_to :category

 define_index do
  indexes :name
  indexes content
  has category(:id), :as => :category_id
 end
...
end

SearchController:

@articles = Article.search params[:q], :with => {:category_id => params[:category]}

1 个答案:

答案 0 :(得分:0)

对于Sphinx,nils / NULL被视为0,因此如果没有将params [:category]值传递给控制器​​,那么最好不要通过该属性的过滤器。这样的事情,也许是:

filters = {}
filters[:category_id] = params[:category] if params[:category].present?

@articles = Article.search params[:q], :with => filters