У меня есть модель продуктов, настроенная на то, что я пытаюсь выполнить поиск с Thinking Sphinx. Модель имеет атрибут, называемый статусом, который может быть активным, неактивным или активным в указанные даты.
Я хотел бы иметь возможность ограничивать результаты поиска активными продуктами. То есть имеет статус активного или имеет статус активного в течение дат, и текущее время находится между этими датами.
Я новичок в Rails, поэтому я ищу предложения относительно того, как я могу это реализовать. Я подумал о том, что в моей модели вычисляется логический метод, который вычисляет эту логику, но я не думаю, что это индексируется Sphinx.
Я использую MySQL в качестве сервера базы данных.
Есть ли у кого-нибудь яркие идеи?
Вы правы, рубиновые методы на вашей модели не доступны для сфинксов. Однако вы можете повторно создать метод как атрибут sphinx. Их можно легко сделать с помощью SQL-фрагментов, например:
class Person < ActiveRecord::base
...
define_index do
has "status = 'active' and now() > start_date and now() < end_date", :as => :active, :type => :boolean
end
...
end
Использование строки для указания поля или атрибута, подобного этому, совпадает с заданием настраиваемого столбца при построении SQL-запроса.
попробуйте метод #indexes (не пробовал себя, просто заметил в googling)
http://www.slideshare.net/sazwqa/using-thinking-sphinx-with-rails-presentation
слайд 11
Также: