Ruby on rails rails activerecord的导入/导出功能

Ruby on rails rails activerecord的导入/导出功能,ruby-on-rails,ruby,design-patterns,activerecord,export,Ruby On Rails,Ruby,Design Patterns,Activerecord,Export,我想让我的用户能够在我的服务器上导出和导入他们的帖子,包括图像、评论和任何链接到对象的数据 基本上,我希望他们能够点击某个地方并收到一个zip文件,如果他们打开它,他们将看到几个xml、json或yaml文件以及作为他们文章一部分的图像文件 然后,他们可以上传文件,并以导出时的方式收回帖子 我找不到任何教程或gem来帮助我,你能向我推荐解决这个问题的设计吗 谢谢,过去,我这样做是为了出口: 创建一个新的临时目录 将要导出的所有内容序列化为所选格式,并将其写入该目录中的文件 确保图像清晰可识别,

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

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

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

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


谢谢,

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

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

  • 可选,但这是一个好主意:将整个shebang移动到后台作业中,并在用户的文件准备好下载后通知用户

我不确定这种导入方式是否可行,甚至是一个好主意,但你可以试试

指定导出哪些字段/属性的一个巧妙技巧是覆盖
记录#属性_名称

假设您只想导出一个Post对象的标题、正文和创建日期,该Post对象通常还更新了\u at、用户\u id等

# 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

只在导出脚本中执行此操作很重要,因为这里的记录自省会出错。但是,通常导出方法(到_yaml、到_xml等)依赖于此机制来确定导出内容,因此在本地/临时执行此操作非常有效。

谢谢,您是对的,在数据库中加载用户上传的数据可能不是一个好主意。用这种方法实施的安全措施将非常庞大。