2012-02-15 13 views
0

私はスフィンクスにとっては初めてです。スフィンクスの考え方「スキーマにフィールドが見つかりません」エラー

"bob"とcompany_id "14"という名前のユーザーを検索しようとしています。

Controller: 
@users = User.search 'bob', :conditions => { :company_id => '14'} 

Model: 
    define_index do 
    indexes :name 
    indexes :company_id 
    end 

Error: 
index user_core: query error: no field 'company_id' found in schema 

私は再インデックス化テーブル&の「のcompany_id」すべてのものを数回持っています。 「名前」を検索しているときは、すべて正常に動作します。あなたの場合には、そう

has company_id 

答えて

3

属性として宣言する必要があります

Model: 
define_index do 
    indexes :name 
    has :company_id 
    end 
+0

はい、正確には、Model.search( 'bob'、:with => {:company_id => '14'})のように**の**を使用して検索することができます – Anatoly

4

ちょうど別の役に立つヒントとして:私のために、私はModel.search()と呼ばれる方法を変更しなければならなかったが判明しますフィールドがアトリビュート(すなわちhasを使用)としてリストされていたので、:conditionsの代わりに:withsearchメソッドを呼び出す必要がありました(フィールド用)。

1

そして1より有用ヒント、あなたは私のようなばかなことが起こる場合:

あなたはこのエラーを取得していて、正しく属性とフィールドを使用している場合、それはあなたがあなたのdevのサーバーを再起動するのを忘れている可能性がありインデックスに新しいフィールドを追加した後

関連する問題