2016-08-27 11 views
1

オブジェクトを深くネストしたオブジェクトをデータベーステーブルに保存/シリアル化/ダンプしてから再度リストアする方法はありますか?復元前に自動インクリメントIDをオフにしてから、オブジェクトが復元された後に自動インクリメントをオンに戻したいと思いますか?削除されたオブジェクトの保存/シリアライズ/ダンプとその後の復元

私たちのユーザーは、意図しないオブジェクトを削除し、復元したいと思うことがあります。削除されたオブジェクトは、関連するオブジェクトが多数あるため、アクティブなデータベースの中に保持することはできません(多数の関係を持つオブジェクトとの多くのbelongs_toおよびhas_many関係)。

あらかじめSOコミュニティに感謝します。

+0

あなたは、その後、すべての関連付けを持つオブジェクトを格納する再帰関数でそれらを復元するためにJSONのOBJを使用することができます。私はベストプラクティスでフラグを使ってオブジェクトを使用不可能にするか、または無効にすることを見てきました。有効期限を追加でき、取り出せない可能性があります。 – kinduff

答えて

0

あなたはJSON(or XML)への関連を持つオブジェクトをダンプすることができます:生産JSONの

user.as_json(include: { posts: { 
          include: { comments: { 
              only: :body } }, 
          only: :title } }) 

例:

as_json

そしてこのpostのために最後の例から撮影

# => { "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" } ] } 

さをネストされたモデルのアンマーシャリングについて コードは、あなたが呼び出すことにより、すべての関連付けを持つオブジェクトを復元することができるようになります提供のようになります。

user = User.from_json user_with_associations_as_json_string 
関連する問題