保存/序列化/转储已删除的对象,然后再次还原

时间:2016-08-27 20:52:06

标签: mysql ruby-on-rails

Rails中是否有一种方法可以在数据库表中保存/序列化/转储具有所有深层嵌套关联对象的对象,然后再次将其还原?我想在恢复之前关闭自动增量ID,然后在恢复对象后重新打开自动增量?

我们的用户有时会删除他们不想要的对象,并希望看到它们已恢复。我们不能在我们的活动数据库中保留已删除的对象,因为它们具有许多关联对象(与对象的很多belongs_to和has_many关系又反过来又有很多这样的关系)。

先感谢SO社区。

1 个答案:

答案 0 :(得分:0)

您可以将具有关联的对象转储到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