作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Rails 中有没有一种方法可以将一个对象及其所有深度嵌套的关联对象保存/序列化/转储到数据库表中,然后再次恢复它?我想在还原之前关闭自动递增 ID,然后在还原对象后重新打开自动递增?
我们的用户有时会删除他们不希望删除的对象并希望看到它们恢复。我们不能将已删除的对象保留在我们的事件数据库中,因为它们有许多关联的对象(许多 belongs_to 和 has_many 关系与对象又又有许多这样的关系)。
提前感谢 SO 社区。
最佳答案
您可以将具有关联的对象转储到 JSON ( or XML ):
user.as_json(include: { posts: {
include: { comments: {
only: :body } },
only: :title } })
生成的 JSON 示例:
# => { "id" => 1, "name" => "Konata Izumi", "age" => 16,
# "created_at" => "2006/08/01", "awesome" => true,
# "posts" => [ { "comments" => [ { "body" => "1st post!" }, { "body" => "Second!" } ],
# "title" => "Welcome to the weblog" },
# { "comments" => [ { "body" => "Don't think too hard" } ],
# "title" => "So I was thinking" } ] }
取自 as_json 的最后一个例子
还有这个post是关于解码嵌套模型。看起来那里提供的代码将允许您通过调用恢复具有所有关联的对象:
user = User.from_json user_with_associations_as_json_string
关于mysql - 保存/序列化/转储已删除的对象,然后再次恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39185635/
我是一名优秀的程序员,十分优秀!