Мышление Сфинкса: как вернуть любой атрибут, когда запрос атрибута пуст - PullRequest
0 голосов
/ 29 января 2012

У меня есть форма поиска, по которой пользователь может искать содержимое статьи и сужать ее, используя поле выбора с категориями. Когда параметр категории пустой, он ищет пустой идентификатор, но я бы хотел вернуть любую категорию в этом случае. Можно ли настроить 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 голосов
/ 29 января 2012

Для Sphinx nils / NULL обрабатываются как 0, поэтому, если значение params [: category] не передается в контроллер, лучше, если вы просто не пропустите фильтр по этому атрибуту.Примерно так, возможно:

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

@articles = Article.search params[:q], :with => filters
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...