2011-08-14 32 views
0

我有一些问题索引我的一个模型。关系不会索引

这里是我的模型:

class Model < ActiveRecord::Base 
    define_index do 
    # ... 
    has tracker.open, as: :open, type: :boolean 
    has source.priority, as: :priority, type: :integer 
    # ... 
    end 

    belongs_to :tracker 
    belongs_to :source 
end 

我跑这对指数模型:

rake thinking_sphinx:index --trace 

以下是错误:

undefined method `priority' for #<ThinkingSphinx::Source:0x00000106ae1738> 

任何人都知道为什么tracker关系有效,但不是source
我在OS X 10.7中使用Sphinx 0.9.9-release,Rails 3.1.0.rc5。

更新

使用这个rake任务的时候,我不索引部分中出现任何错误(重新索引代替指数的)。

rake thinking_sphinx:reindex 

现在的问题是我不能使用优先级字段。 这是搜索时所使用的代码:

Model.search(with: {priority: [1]}) 

这行代码:

has source(:priority) 

结果在此错误:

ArgumentError: wrong number of arguments (1 for 0) # Produced by the line above. 

使用此行:

has source.priority 

Resu在这个错误中的lts:

NoMethodError: undefined method `priority' for #<ThinkingSphinx::Source:0x00000106b0ff98> 

任何人都知道为什么?

更新2

用于rake thinking_sphinx:rebuild重新索引数据库,而不是rake thinking_sphinx:indexrake thinking_sphinx:reindex

+0

看起来思维 - 狮身人面像有'源'类,你有'源'模型和TS无法解决这个问题。尝试'有源(:优先)'... –

+0

感谢您的提示,但它没有工作。我更新了我的帖子。 – Oleander

+0

尝试重命名你的'Source'模型。 TS有他自己的'source'方法(http://rubydoc.info/gems/thinking-sphinx/2.0。5/ThinkingSphinx/Join:source) –

回答

1

就行了讨论,你需要使用assoc方法来解决此问题:

has assoc(:source).priority 

这里的问题是,在引擎盖下,狮身人面像指数有来源 - 和这么想着狮身人面像建造源自动,因此保留源方法。我真的应该改变这种情况,但这会让你在此期间得到解决。