Simple-Stored は、レールで CouchDb を処理するための CouchPotato の上に基づいています。ファイルをcouchdbにアップロードしようとしているときに、base64、json postを使用して試しましたが、何も正しく機能していないようです。既に保存されているドキュメントの _attachments プロパティにアップロードしようとしています。
このようなモデルを持つ:
class Patient
include SimplyStored::Couch
end
更新アクションを介してファイルを受信している間、コントローラーで
def update
@patient = Patient.find(params[:id])
if params[:patient][:_attachments]
attachement = params[:patient][:_attachments]
filedata = attachement.tempfile.read
data = Base64.encode64(filedata).gsub(/\n/, '')
type = attachement.content_type
or_name = attachement.original_filename
@patient._attachments = {or_name => {'data' => data, 'content_type' => type}}
@patient.save
return render :json => @patient._attachments
end
end
ここで面白いのは、@patient._acttachments にファイル自体があり、それが .save; の後にレンダリングで返されていることを確認できることです。しかし、実際にはcouchdbデータベースに保存されていません。
保存を行っていない理由、または_attachmentをcouchdbデータベースにプッシュするだけのアイデアがあります。? (ちなみに、これは常に 500 エラーを返します :( )