2011-07-06 13 views
3

私は、belongs_toというユーザモデルのTechniqueモデルを持っており、Thinking Sphinxによって索引付けされています。Thinking Sphinxを使用してインデックス付きモデルオブジェクトのコレクションを検索する

私はまた、技術オブジェクトの配列を返します。私のモデル内のメソッドがあります。

def possible_children(user) 
    user.techniques - (self.children + [self]) 
end 

をこれはちょうど、すでにの子である技術のそれらを減算し、ユーザーが持っている技術を要します'self'テクニックオブジェクトと一緒に 'self'自体を返し、残りのテクニックオブジェクトを返します。私はそうのような可能性の子供たちのコレクションをインスタンス化コントローラで次に

@possible_children = @technique.possible_children(current_user).search params[:search] 

これは

これは関連性があるかどうかわからなく、コントローラではない「#のための未定義のメソッド 『検索』を」返しますこれはTechniquesControllerではありません。

私がしようとしているのは、Modelメソッドから返された任意のコレクションを検索することです。

アイデア?

詳細をお知らせください。ありがとうございました。

答えて

5

Thinking Sphinxではこれは不可能です - 少なくとも、それは単純ではありません。

possible_children = @technique.possible_children(current_user) 
Technique.search params[:search], 
    :with => {:sphinx_internal_id => possible_children.collect(&:id)} 

スフィンクスは独自のIDを持っていますが、データベースから主キーが属性として保存されている:何あなたができることは、あなたが全体で検索したいオブジェクトを使用してそのIDをつかむと、フィルタにそれを使用でThinking Sphinxによるsphinx_internal_id

+0

ありがとうパットは、そのトリックをしたように見えます。 – Mitya

+0

:sphinx_internal_id!私は30分Googleでこれを探していた。ありがとう。 – gtd

関連する問題