Сложно сказать, подходит ли ваш обходной путь, учитывая, что я не уверен, каковы области действия active_products_by_type
и active_scope
(что такое сфинкс? Оба? Ни то, ни другое?).
Но вы не можете вызывать область AR при поисковом вызове, поскольку области AR встроены для создания запросов SQL. У Sphinx есть собственный протокол запросов, поэтому Thinking Sphinx добавил области Sphinx. К этому следует добавить, что Sphinx не может ссылаться на базу данных во время поиска (только при индексации), поэтому любая ссылка на данные, которые Sphinx не может увидеть, также не будет полезна.
Все это говорит, что в коде, вероятно, нет ничего, что позволило бы вам связать поисковый вызов с областью AR - и вы, вероятно, даже получите результаты обратно - но это потому, что область влияет на вызов Model.find
, который Thinking Sphinx позволяет конвертировать результаты поиска в экземпляры модели В результате вы можете видеть объекты, а область AR применяется только к данной странице результатов поиска, и математика разбивки на страницы (количество страниц / общее количество результатов) будет ненадежной.
Ух, это немного эссе, но, надеюсь, это поможет ...