Rails アプリで永続化されたタイヤ モデルをいくつか使用しています。を使用して、検索は正常に機能していますTire.search ['index1','index2'], :load => true do ...
が、新しいインデックスとモデルを作成しました。それを検索に含めてその結果にアクセスしようとすると、次のエラーが発生します。
undefined method `detect' for #<AuthoredHistory:0x000001013d6a88>
Tire::Results::Collection#results の最後の行から来ていることがわかります。
@response['hits']['hits'].map { |item| records[item['_type']].detect { |record| record.id.to_s == item['_id'].to_s } }
何らかの理由records[item['_type']]
で、私の他のモデルでは Tire::Results::Collection オブジェクトを返しますが、新しいクラスでは、実際のモデル クラスである AuthoredHistory オブジェクトを返します。宝石の github ページでこれについて何かを見ましたが、Tire.configuration.wrapper では何もしていません。すべてのインデックス付きモデルに Persistence、Search、および Callbacks モジュールを含めています。
何か不足していますか?誰かが私を正しい方向に向けることができますか? (カルミ、ここで私を救ってくれることを願っています!)
[アップデート]
今、私はどこかに到達しています...特定のインデックスからの結果が1つだけ返されたときにエラーが発生していました。インデックスからの結果が 2 つ以上ある場合は、それを Tire::Results::Collection にラップします。今ハックを見つけるために...
【再度UPDATE】
ハッキーな解決策が見つかりました!答えは以下をご覧ください...