我有一个附件模型。我希望每次在版本模型中更新时都保存旧版本的附件。我在这方面取得了一些成功,但突然间它停止了工作。
一切似乎都有效,但当我尝试访问某个版本时,Google会说the x file cannot be displayed because it contains errors.
原始文件有效。
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
但是这造成了另一个错误:trying to download a file which is not served over 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
答案 0 :(得分:2)
附件的file
不是文件对象;它是CarrierWave的上传者。您应该分配它所代表的文件,而不是分配整个上传器。使用versions.create(name: name, file: file.file)