ユーザーがアップロードしたファイルを保存するために、 carrierwave-postgresqlを使用しています。
FileUploader (/app/uploaders/file_uploader.rb 内) という名前のアップローダがありstorage :postgresql_lo
ます。
アップロードされたファイルは、:file_oid
UploadedFile というモデルの列 (app/models/uploaded_file.rb 内) にmount_uploader :file_oid, FileUploader
次のようにリンクされます。
class UploadedFile < ActiveRecord::Base
attr_accessible :file_oid, :processed, :type
mount_uploader :file_oid, FileUploader
end
としてファイルをアップロードします
f = UploadedFile.new
f.file_oid = params[:flat_file]
f.save!
ファイルを読み取ろうとすると、read
メソッドは正常に機能しますが、「each」または「open」を取得できません。
> uf = UploadedFile.find(:first)
> uf.file_oid.read # works, gives the contents of the file
> uf.file_oid.file.read # this works too
> uf.file_oid.file.each
NoMethodError: undefined method `each' for #<CarrierWave::Storage::PostgresqlLo::File:0x000000039157a0>
> uf.file_oid.file.open
NoMethodError: private method `open' called for #<CarrierWave::Storage::PostgresqlLo::File:0x000000039157a0>
> uf.file_oid.open
NoMethodError: private method `open' called for /uploadedfile_file_oid/231132:FileUploader