2011-08-14 12 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タスク(代わりにインデックスREINDEX)を使用したとき、私は、インデックス部分の間にすべてのエラーを得ることはありません。

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このエラーのメッセージ:

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

誰でも知っていますか?

アップデート2

代わりrake thinking_sphinx:indexrake thinking_sphinx:reindexの、データベースのインデックスを再作成するrake thinking_sphinx:rebuildを使用します。

+0

Thinking-Sphinxに 'Source'クラスがあり、' Source'モデルがあり、TSがこれを解決できないようです。試してみてください '' source(:priority) '... –

+0

ヒントはありがたいですが、うまくいきませんでした。私は自分の投稿を更新しました。 – Oleander

+0

あなたの 'ソース'モデルの名前を変更しようとします。 TSには独自の 'source'メソッドがあります(http://rubydoc.info/gems/thinking-sphinx/2.0。 –

答えて

1

リストに述べたように、あなたがこの問題を回避するためにassocメソッドを使用する必要があります。

has assoc(:source).priority 

問題ここでは、ボンネットの下に、スフィンクスインデックスはソースを持っているということです - ので、スフィンクスは、ソースを構築している考えます自動的に予約されたソースメソッドです。私は本当にそれを変更する必要がありますが、これはその間にあなたの周りにあなたを取得します。

関連する問題