0

我想让我的用户能够在我的服务器上导出和导入他们的帖子,包括图像、评论和任何与对象相关联的数据。

基本上我希望他们能够点击某个地方并接收一个 zip 文件,如果他们打开它,他们会看到几个 xml、json 或 yaml 文件以及作为他们帖子一部分的图像文件。

然后,他们可以上传文件并以导出时的方式恢复他们的帖子。

我找不到任何教程或宝石来帮助我,你能推荐我解决这个问题的设计吗?

谢谢,

4

1 回答 1

1

在过去,我这样做是为了出口:

  • 创建一个新的临时目录
  • 将您想要导出的所有内容序列化为您选择的格式并将其写入该目录中的文件
  • 确保图像清晰可辨,例如通过序列化它们的文件名而不是神秘的 ID
  • 复制临时目录中的图像文件
  • 压缩整个目录(可以通过系统命令完成)

  • 可选,但这是一个好主意:将整个 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 等)依赖于这种机制来确定要导出的内容,因此在本地/临时执行此操作效果很好。

于 2013-10-20T12:36:51.673 回答