ruby-on-rails - 如何复制 CarrierWave 文件

标签 ruby-on-rails ruby carrierwave fog

我有一个附件模型。我想在版本模型中每次更新附件时保存旧版本的附件。我在这方面取得了一些成功,但突然它停止工作了。

一切似乎都正常,但当我尝试访问某个版本时,Google 会说无法显示 x 文件,因为它包含错误。原始文件有效。

class Attachment < ActiveRecord::Base
  mount_uploader :file, AttachmentUploader
  has_many :versions

  after_save :version

private

  def version
    versions.create(name: name, file: file) if file_changed?
  end
end

class Version < ActiveRecord::Base
  mount_uploader :file, VersionUploader
  belongs_to :attachment
end

我尝试改变一些东西:

  def version
    versions.create(name: name, file: file, remote_file_url: file_url) if file_changed?
  end

但这又产生了另一个错误:尝试下载不是通过 HTTP 提供的文件

我不知道如何调试这个问题。上传的内容是普通的。

class AttachmentUploader < CarrierWave::Uploader::Base
  include CarrierWave::MimeTypes
  process :set_content_type

  storage :file

  def store_dir
    "#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

最佳答案

附件的文件不是文件对象;这是一个 CarrierWave uploader 。您可能应该分配它代表的文件,而不是分配整个上传者。使用 versions.create(name: name, file: file.file)

可能会得到更好的结果

关于ruby-on-rails - 如何复制 CarrierWave 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19523069/

相关文章:

ruby-on-rails - 使用 Paperclip 时 ActiveAdmin 不上传图像

ruby-on-rails - Rspec 强参数与合并

html - 删除网站上的意外内容

ruby-on-rails - Rails、RSpec 和 Factory Girl : how to connect to 2 databases

ruby-on-rails - 找不到指定的模块(MySQL)

ruby-on-rails - Rails3 载波未上传

ruby-on-rails - rails redirect_to :back with anchor not working

php - 将 Ruby/Rails 应用程序移植到 PHP 5

ruby-on-rails - 使用载波视频上传 .MOV 文件?

ruby-on-rails - 载波上传编码::UndefinedConversionError: "\xFF"从 ASCII-8BIT 到 UTF-8