我想让我的用户能够在我的服务器上导出和导入他们的帖子,包括图像、评论和任何与对象相关联的数据。
基本上我希望他们能够点击某个地方并接收一个 zip 文件,如果他们打开它,他们会看到几个 xml、json 或 yaml 文件以及作为他们帖子一部分的图像文件。
然后,他们可以上传文件并以导出时的方式恢复他们的帖子。
我找不到任何教程或宝石来帮助我,你能推荐我解决这个问题的设计吗?
谢谢,
我想让我的用户能够在我的服务器上导出和导入他们的帖子,包括图像、评论和任何与对象相关联的数据。
基本上我希望他们能够点击某个地方并接收一个 zip 文件,如果他们打开它,他们会看到几个 xml、json 或 yaml 文件以及作为他们帖子一部分的图像文件。
然后,他们可以上传文件并以导出时的方式恢复他们的帖子。
我找不到任何教程或宝石来帮助我,你能推荐我解决这个问题的设计吗?
谢谢,
在过去,我这样做是为了出口:
压缩整个目录(可以通过系统命令完成)
可选,但这是一个好主意:将整个 shebang 移动到后台作业中,并在他们的文件准备好下载时通知用户。
我不确定通过这种方式导入是否可行,甚至是一个好主意,但您可以尝试。
指定导出哪些字段/属性的一个巧妙技巧是覆盖Record#attribute_names
.
假设您只想导出通常还具有 update_at、user_id 等的 Post 对象的标题、正文和创建日期。
# in the export script you'd write
class Post
def attribute_names
['title', 'body', 'created_at']
end
end
Post.export_for(@user).all.to_yaml
仅在导出脚本中执行此操作很重要,因为您在这里搞砸了记录自省。但是,通常导出方法(to_yaml、to_xml 等)依赖于这种机制来确定要导出的内容,因此在本地/临时执行此操作效果很好。