2015-07-18 2 views
0

У меня есть Artwork модель, которая связана с моделями Subject, Location, Keyword, Style и Medium по HABTM. У меня также есть связь с моделью Artist с одним-ко-многим. Вот моя ошибка, я получаю:мышление Sphinx - неопределенный метод `Klass'

>rake ts:index 
Generating configuration to /Users/<user>/Developer/jtodd/jtoddgalleries/config/development.sphinx.conf 
rake aborted! 
NoMethodError: undefined method `klass' for nil:NilClass 

Вот файл моих показателей:

ThinkingSphinx::Index.define :artwork, :with => :active_record do 
    indexes title, :sortable => true 
    has jtg 
    has width 
    has height 


    has subject.id, :as => :subject_ids 
    has location.id, :as => :location_ids 
    has keyword.id, :as => :keyword_ids 
    has artist.first_name, :as => :artist_first 
    has artist.last_name, :as => :artist_last 

    has style.id, :as => :style_ids 
    has medium.id, :as => :medium_ids 
end 

Я не могу понять, почему я получаю различные ошибки. У меня может не быть уверенности в полях против атрибутов, и, возможно, именно там я ошибаюсь. Любая помощь очень ценится, спасибо!

ответ

2

Я предполагаю, что ваши ассоциации перечислены в вашей модели с несколькими именами? В определении индекса должно быть одинаково.

Что касается полей с атрибутами, то хорошее эмпирическое правило состоит в том, что все, что вы ожидаете от пользователя, чтобы вводить и получать результаты, должно быть полем. Итак, я предполагаю, что вы хотите, чтобы имена художников были первыми и фамилиями как поля.

Таким образом, измененное определение индекса:

ThinkingSphinx::Index.define :artwork, :with => :active_record do 
    indexes title, :sortable => true 
    indexes artist.first_name, :as => :artist_first 
    indexes artist.last_name, :as => :artist_last 
    has jtg 
    has width 
    has height 

    has subjects.id, :as => :subject_ids 
    has locations.id, :as => :location_ids 
    has keywords.id, :as => :keyword_ids 
    has styles.id, :as => :style_ids 
    has mediums.id, :as => :medium_ids 
    # or is it media? 
end 

Если вы все еще получаете сообщение об ошибке, вы можете запустить rake ts:index --trace и поделиться трассировку с нами? :)

+0

понял это, но это была именно проблема, спасибо за подтверждение! – inthenameofmusik

Смежные вопросы