思考Sphinx Rails多重协会

时间:2014-06-10 09:50:29

标签: ruby-on-rails thinking-sphinx

我有以下型号

class Product < ActiveRecord::Base
  belongs_to :sub_category
end

class SubCategory < ActiveRecord::Base
  belongs_to :category
  has_many :products
end

class Category < ActiveRecord::Base
  has_many :sub_categories , -> { where("activate = 1") }
end

我需要索引我的产品表。我需要使用类别名称(在类别表中)和子类别名称(在子类别表中)进行搜索

ThinkingSphinx::Index.define :product , :with => :active_record do
  indexes description
  indexes name
  indexes merchant_name
  indexes sub_category(:sub_category) , :as => :sub_category_name
  indexes category(:name) , :as => :cat_name
  has sub_category_id
end

类别(:名称)失败。子类别工作正常。 请问有人请帮忙。我试过sub_category.category(:name)但那也失败了

错误消息

  

错误:index&#39; link_core&#39;:sql_range_query:你的错误在   SQL语法;查看与MySQL服务器对应的手册   正确的语法版本,以便在AS&#39; AS cat_name,products.id AS附近使用   sphinx_internal_id,&#39;产品&#39; AS`sphinx_internal _&#39;在第1行   (DSN = MySQL的://根:*** @本地:3306 / xxxx_dev_phase4)

1 个答案:

答案 0 :(得分:1)

name应该作为链式方法传递,而不是作为参数传递

indexes sub_category.category.name , :as => "category_name"

感谢主人帕特帮助我

concerned github thread