所以我有一个使用 rails 3 和 mongodb 的应用程序来提供文件。我想使用运行器进程将所有文件导入到 gridfs 中,而不为系统中已有的文件创建新的 ObjectId。本质上,我想使用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!
有任何想法吗?