2011-01-19 2 views
0

Есть ли какой-либо из определяющих аспектов в столбце связанной модели, который имеет тип int? Преобразует ли sphinx все поля, определенные как грани в строки, если они относятся к столбцам связанных моделей?Thinking Sphinx Facets на ассоциированной модели

Я пытаюсь определить столбец моей дочерней таблицы как фасет. После перестройка, когда я делаю Model1.facets, я получаю эту ошибку.

class Model1 < ActiveRecord::Base 
    .... 

    has_many :communities, :through => :model2 

    ... 

    define indexes 

    ... 

    indexes model2.community_id, :as => :community_id, :facet => :true 

    ... 

    end 

end 

модель 1 - Текущая модель модель 2 - присоединиться к модели с использованием: через

Model1.facets 

NoMethodError: undefined method `to_crc32' for 9:Fixnum 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet.rb:99:in `translate' 
     from (irb):3:in `detect' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet.rb:98:in `each' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet.rb:98:in `detect' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet.rb:98:in `translate' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet.rb:75:in `value' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet_search.rb:114:in `add_from_results' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/search.rb:219:in `each_with_groupby_and_count' 
     from (irb):3:in `each_with_index' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/search.rb:218:in `each' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/search.rb:218:in `each_with_index' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/search.rb:218:in `each_with_groupby_and_count' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet_search.rb:113:in `add_from_results' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet_search.rb:49:in `populate' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet_search.rb:47:in `each' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet_search.rb:47:in `populate' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/facet_search.rb:13:in `initialize' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/search_methods.rb:422:in `new' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/ 
lib/thinking_sphinx/search_methods.rb:422:in `facets' 
     from (irb):3>> 

ответ

2

Если вы используете целые числа для граней, то они должны быть определены как атрибуты:

has model2.community_id, :as => :community_id, :facet => :true 

Метод indexes предназначен для полей - это текстовые данные, которые вы хотите, чтобы люди могли искать. Я предполагаю, что люди, которые используют ваш сайт, не будут вводить идентификатор сообщества в поле поиска. Оставьте комментарий, если это не так, и я расскажу о том, как вы можете использовать community_id как поле, так и атрибут.

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