4

したがって、ファイルを提供するレール3とmongodbを使用するアプリがあります。既にシステムにあるファイルの新しい ObjectId を作成せずに、ランナー プロセスを使用してすべてのファイルを gridfs にインポートしたいと考えています。基本的に、carrierwave を使用して、既にデータベースにあるファイル オブジェクトにファイルを添付したいと考えています。

なぜか、新しいファイル ドキュメントを作成するときに、問題なくローカル ファイルを添付できます。ただし、以前に作成したドキュメントにローカル ファイルを添付することはできません。

私はあらゆる形式の Mongoid の更新を試しましたが、メソッドが欠落しているか、メソッドが不明であることがわかりました。

たとえば、これは機能します。

somefile = Upload.new(
  :name => "somefile.ext"
)
somefile.upload = File.open("/foo/bar.ext")
somefile.save!

しかし、これはしません:

somefile = Upload.first(:conditions => {:name => "somefile.ext"})
somefile.upload = File.open("/foo/bar.ext")
somefile.save!

何か案は?

4

1 に答える 1

1

この方法で、既存のオブジェクトの新しいファイルを保存できます。

somefile = Upload.find_by_name("somefile.ext").first
unless somefile.blank?
  somefile.remove_upload = true
  somefile.save!
  somefile.upload = File.open("/foo/bar.ext")
  somefile.save!
end

ご覧のように、

somefile.remove_upload = true

意味

somefile.remove_your_mounted_uploader = true
于 2012-04-18T19:59:22.650 に答える