更新carrerwave S3中的文件路径
Update path of file in carrerwave S3
我有一个带有文件的文档模型,该文件通过我的上传器 (mount_uploader :file, DocumentUploader
) 使用 Carrierwave(fog) 上传到 S3。我也在使用 'paranoia' gem 的 acts_as_paranoid
软删除文件。销毁后,我希望将附件移动到同一目录中的 'archive' 文件夹中。然后我计划在恢复已删除的文档时将其移回原始(父)目录。
我的模型中有以下内容:
skip_callback :commit, :after, :remove_file!
before_destroy :move_file_to_archive
after_restore :fetch_file_from_archive
并且在方法 move_file_to_archive
中,我使用 fog 建立了到亚马逊的连接并执行以下操作以将文件移动到存档:
bucket = connection.directories.get(bucket_name)
file = bucket.files.get(self.file.file.path)
new_path = file.key.split('/')[0..-2].join('/') + '/archive/' + file.key.split('/')[-1]
new_file = file.copy(bucket_name, new_path)
file.destroy
问题是我找不到让我的文档对象指向新(存档)文件而不是旧文件的方法。不知何故,当对象被销毁时,我希望 self.file.path 更改为存档路径而不是原始路径。然后在恢复文档时还原它。如有任何帮助,我们将不胜感激!
让它自己工作。我在我的 DocumentUploader
中添加了一个条件,以设置包含 /archive/
的路径,以防文档在偏执狂的 deleted_at
字段中存在值。如果文档当前处于删除状态,只是这样做会使 carrierwave 查看存档路径。
我有一个带有文件的文档模型,该文件通过我的上传器 (mount_uploader :file, DocumentUploader
) 使用 Carrierwave(fog) 上传到 S3。我也在使用 'paranoia' gem 的 acts_as_paranoid
软删除文件。销毁后,我希望将附件移动到同一目录中的 'archive' 文件夹中。然后我计划在恢复已删除的文档时将其移回原始(父)目录。
我的模型中有以下内容:
skip_callback :commit, :after, :remove_file!
before_destroy :move_file_to_archive
after_restore :fetch_file_from_archive
并且在方法 move_file_to_archive
中,我使用 fog 建立了到亚马逊的连接并执行以下操作以将文件移动到存档:
bucket = connection.directories.get(bucket_name)
file = bucket.files.get(self.file.file.path)
new_path = file.key.split('/')[0..-2].join('/') + '/archive/' + file.key.split('/')[-1]
new_file = file.copy(bucket_name, new_path)
file.destroy
问题是我找不到让我的文档对象指向新(存档)文件而不是旧文件的方法。不知何故,当对象被销毁时,我希望 self.file.path 更改为存档路径而不是原始路径。然后在恢复文档时还原它。如有任何帮助,我们将不胜感激!
让它自己工作。我在我的 DocumentUploader
中添加了一个条件,以设置包含 /archive/
的路径,以防文档在偏执狂的 deleted_at
字段中存在值。如果文档当前处于删除状态,只是这样做会使 carrierwave 查看存档路径。