2016-08-09 12 views
1

Carrierwave gemを使用してモデルに添付ファイルをアップロードしています。添付ファイルの全文検索を可能にするために、マッパー添付ファイルプラグインとともにelasticsearchを追加しました。Rodeでbase64にCarrierwaveをエンコードする

Carrierwaveとelasticsearchはうまく動作しますが、フルテキスト検索を行うには、添付ファイルをbase64でエンコードする必要があります。

私はこのチュートリアル(http://rny.io/rails/elasticsearch/2013/08/05/full-text-search-for-attachments-with-rails-and-elasticsearch.html)に従ってきましたが、RailsまたはCarrierwaveに変更が加えられていると想定しています。私はパスを交換する場合

File.open(Base64.encode64(File.read(document.file))) 

:具体的には、私はBASE64などの添付ファイルをエンコードしようとしていたとき、私は次のように入力エラーを取得:

no implicit conversion of CarrierWave::SanitizedFile into String

をエラーは、モデルの次の行にあります実際のファイルへのURLでそれはうまく動作します。

私はSOで検索しましたし、私は見つけることができる唯一の関連する答えは私に同じエラーを与える:Carrierwave encode file to base64 as process

は、私は完全なレールの初心者ですとうまくいけば、これは私を除いてすべての人に明らかだものですが、我々はすべてです初心者は、そう?

ありがとうございます!

答えて

0

CarrierWaveのreadメソッドは、ファイルの内容を返します。だから、Documentは、あなたのモデルであり、fileがあなたのアップローダ属性であると仮定すると、これは動作するはずです:

Base64.encode64(document.file.read) 
+0

は、それが簡単に...おかげということであったと信じてすることはできません! – Nick

関連する問題