Это старая ветка, но, поскольку я нашел ее во время поиска той же информации, я подумал, что поделюсь своим ответом.
Он не (насколько я могу судить) четко определен наЗадумчивая домашняя страница Sphinx, но функция поиска на модели принимает опцию : выберите - и в ответ на ваш второй вопрос она также принимает : объединения , поэтому, если у вас было две связанные модели:
class Project < ActiveRecord::Base
attr_accessible :name
has_many :tasks
end
class Task < ActiveRecord::Base
attr_accessible :name
belongs_to :project
end
Вы должны иметь возможность искать свои задачи следующим образом:
Task.search "Fix Bug",
:select => 'tasks.id, tasks.name, projects.name as project_name',
:joins => [:project]
Нет сомнений в том, что это немного более чистый способ, поэтому я рад, что меня исправили -общая идея работает, хотя!
РЕДАКТИРОВАТЬ (для мышления sphinx v3)
:select
используется в качестве параметра sphinx в версии 3, и вместо этого вы должны добавить :select
и :joins
до :sql
хеша.Иначе вы получите действительно странные ошибки, которые не так очевидны!
Приведенный выше пример становится:
Task.search "Fix Bug",
:sql => { :select => 'tasks.id, tasks.name, projects.name as project_name',
:joins => [:project] }