Rails Thinking Sphinx: - Как выбрать только несколько полей в результате и выбрать несколько таблиц (ассоциация) - PullRequest
1 голос
/ 25 ноября 2010

Я новичок в Thinking Sphinx for Rails.

Когда Sphinx найдет запись, он выдаст все поля в таблице.Как я могу выбрать только необходимые поля?

И в моем случае мне также нужна ссылка на другую таблицу.как я могу это сделать?

Спасибо

1 Ответ

6 голосов
/ 18 июля 2011

Это старая ветка, но, поскольку я нашел ее во время поиска той же информации, я подумал, что поделюсь своим ответом.

Он не (насколько я могу судить) четко определен наЗадумчивая домашняя страница 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] }
...