加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 如何将文件导入Carrierwave

发布时间:2020-12-17 01:58:58 所属栏目:百科 来源:网络整理
导读:所以我有一个应用程序使用rails 3和 mongodb提供文件.我想使用转轮进程将所有文件导入gridfs,而不为系统中已有的文件创建新的ObjectId.基本上,我想使用carrierwave将文件附加到数据库中已有的文件对象. 出于某种原因,当我创建一个新的文件文档时,我可以没有
所以我有一个应用程序使用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!

有任何想法吗?

解决方法

您可以通过以下方式为现有对象保存新文件:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读