gpt4 book ai didi

ruby-on-rails - 导出事件记录,包括 Rails 中的关系和附件

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:42 25 4
gpt4 key购买 nike

总结

我正在尝试查看是否可以导出 Active Record 及其与文件或 zip 文件的所有关系。

场景

我有一个类(class)模型,它看起来像这样

class Course < ActiveRecord::Base

belongs_to :user

has_many :lessons, -> { order("position ASC") }, dependent: :destroy

end

接下来是类(class)

class Lesson < ActiveRecord::Base

belongs_to :course

has_many :slides, dependent: :destroy

validates :course_id, presence: true

validates :title, presence: true

end

接下来是幻灯片

class Slide < ActiveRecord::Base

belongs_to :lesson

has_attached_file :file
validates_attachment_content_type :file, :content_type => ["application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/vnd.ms-powerpoint",
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
"application/vnd.google-apps.presentation"]

validates :lesson_id, presence: true

validates :position, presence: true

validates :title, presence: true

end

我正在使用 Paperclip Gem 处理文件。

用例

陶艺小类的老师比尔想和全国各地的陶艺老师吉尔分享他自制的陶艺类(class)。她不能一直访问互联网,因此他将向她发送一个 USB 拇指驱动器,其中包含她可以导入到她的类(class)申请中的类(class)。

Bill 登录,转到他的类(class)主页,然后单击“导出”。片刻之后,他的下载文件夹中出现了一个文件/zip,他将其保存到拇指驱动器中。收到此消息后,Jill 登录到她的离线系统并单击“导入类(class)”,从而创建 Bill 在她的 Rails 应用程序上发送的类(class)的镜像副本。

问题

我需要能够将记录导出到包含这些关系等的 csv 或 xml 文件,然后我可以将其导入到同一应用程序的离线安装中。

奖金

我如何将附件与导出一起打包以进行简单的导入和分发?

最佳答案

是的,你可以这样做,但有一些注意事项:看看 Ruby Marshall和 Rails Serialize

Marshall:“编码库将 Ruby 对象的集合转换为字节流,允许将它们存储在当前事件脚本之外。随后可以读取此数据并重构原始对象。”

序列化:“如果您有一个属性需要作为对象保存到数据库中,并作为同一对象检索,则使用此方法指定该属性的名称,它将自动处理。”

您还可以考虑更灵活的方式,例如 JSON 导出和 JSON 导入。这些通常使您不必发送实际的数据库,也不需要特定的版本号匹配。参见 Rails ActiveModel Serializer for JSON和 gem ,如 jbuilderoj .

关于ruby-on-rails - 导出事件记录,包括 Rails 中的关系和附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com