我有一个搜索表单,用户可以搜索文章内容并使用带有类别的选择框缩小范围内容。当类别参数为空时,它会搜索空白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]}
答案 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