rails activerecord的导入/导出功能

时间:2013-10-20 12:12:43

标签: ruby-on-rails ruby design-patterns activerecord export

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

基本上我希望他们能够点击某处并收到一个zip文件,如果他们打开它们,他们会看到几个xml,json或yaml文件以及属于他们帖子的图像文件。

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

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

谢谢,

1 个答案:

答案 0 :(得分:1)

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

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

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

我不确定导入是否可行,或者甚至是个好主意,但你可以试试。

指定导出哪些字段/属性的一个巧妙方法是覆盖Record#attribute_names

假设您只想导出通常也有updated_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等)依赖于此机制来确定要导出的内容,因此在本地/暂时执行此操作非常有效。