Я хочу отобразить фильмы, связанные с данным автором. На странице автора я хочу, чтобы пользователи могли разбивать страницы, сортировать и фильтровать по ключевым словам.
На моей локальной машине все работает нормально. Но, в производстве, список фильмов на странице автора пуст, и я не могу понять, почему. В производстве в консоли я тестировал следующие выражения, но безуспешно (всегда возвращает 0, а в dev возвращает значения > 0):
ruby-1.9.2-p290 :042 > Movie.search(:with => {:author_ids => [6]}).count
=> 0
ruby-1.9.2-p290 :043 > Movie.search(:with => {:author_ids => 6}).count
=> 0
Странно то, что я использую очень похожий код для отображения фильмов, связанных с темой, на странице темы, и он отлично работает как в разработке, так и в производстве. Например:
ruby-1.9.2-p290 :051 > Movie.search(:with => {:topic_ids => 2}, :per_page => 1000).count
=> 295
Вот как я определяю свой класс Movie:
class Movie < ActiveRecord::Base
belongs_to :author
has_many :topics
...
define_index('movie') do
...
has author(:id), :as => :author_ids,
:facet => true
has topics(:id), :as => :topic_ids,
:facet => true
...
end
...
end
А вот как выглядит мой контроллер авторского шоу:
def show
@author = Author.find(params[:id])
keywords = params[:what] || ""
with_params[:author_ids] = [@author.id]
@movies = Movie.search(
keywords,
:with => with_params
)
end
Это наводит меня на мысль, что с индексом Sphinx в производстве что-то не так, но я не знаю, как продолжить расследование, чтобы найти корень проблемы...
ОБНОВЛЕНИЕ: по совету Пэта я обновил Sphinx, и все решилось (я обновился с 0.9.8 до 0.9.10)! Я был сбит с толку, потому что Sphinx НЕ является драгоценным камнем (хотя драгоценный камень Sphinx существует) ... Поэтому мне пришлось пройти через обычный процесс загрузки, создания, установки.