Я настроил некоторые индексы, и все, кажется, работает хорошо, пока я не захотел попробовать отсортировать результаты. У меня есть несколько моделей, но та, в которой я определяю свои индексы, — «Доктор». Я определяю их так:
class SearchController < ApplicationController
define_index do
indexes :firstname, :sortable => true
indexes :lastname, :sortable => true
indexes :sex, :sortable => true
indexes practice(:name), :as => :practice_name, :sortable => true
indexes practice(:address), :as => :practice_address, :sortable => true
# Added after denormalization
indexes county(:name), :as => :county
indexes municipality(:name), :as => :municipality
# Can only filter on integers, thus CRC32-ing
has "CRC32(sex)", :as => :sex_filter, :type => :integer
end
end
Поиск вроде работает нормально. При попытке сортировки по любому из атрибутов я получаю сообщение об ошибке, подобное следующему
index employee_core: атрибут сортировки «имя» не найден
Для имени, фамилии и пола. Я могу частично "решить" это, добавив
имеет имя, фамилию, пол
к блоку define_index
, но я не уверен, как сделать то же самое для ссылок на другую модель (Практика) и возможно ли это вообще.
Кто-нибудь знает, что я мог сделать неправильно, чтобы :sortable => true
не работал, или как я могу определить ссылки на практику как атрибуты?
Пример вызова, который я делаю для Thinking Sphinx, который не работает, как указано выше:
ThinkingSphinx.search "<some search string>", {:with=>{}, :order=>:firstname, :sort_mode=>:desc, :page=>1}
rake ts:rebuild
после добавления:sortable => true
? - person Vasiliy Ermolovich   schedule 14.08.2011