2

私はアタッチメントモデルを持っています。バージョン モデルで更新されるたびに、古いバージョンの添付ファイルを保存したいと考えています。これである程度成功しましたが、突然機能しなくなりました。

すべてが機能しているように見えますが、バージョンにアクセスしようとすると、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
4

1 に答える 1

2

添付fileファイルはファイル オブジェクトではありません。CarrierWave アップローダです。アップローダ全体を割り当てるのではなく、それが表すファイルを割り当てる必要があります。より良い結果が得られる場合がありますversions.create(name: name, file: file.file)

于 2013-10-26T17:49:49.507 に答える