2016-08-27 4 views
1

Gibt es in Rails die Möglichkeit, ein Objekt mit all seinen tief verschachtelten verknüpften Objekten in einer Datenbanktabelle zu speichern/serialisieren/abzulegen und dann wieder zu speichern? Ich möchte Auto-Inkrement-IDs vor dem Wiederherstellen deaktivieren und dann die automatische Schrittweite wieder aktivieren, nachdem die Objekte wiederhergestellt wurden.Speichern/Serialisieren/Löschen eines gelöschten Objekts und erneutes Wiederherstellen

Unsere Benutzer löschen manchmal Objekte, die sie nicht beabsichtigen, und möchten sie wiederhergestellt sehen. Wir können gelöschte Objekte in unserer aktiven Datenbank nicht aufbewahren, da sie viele assoziierte Objekte haben (viele gehören zu den Beziehungen "objects_to" und "has_many" mit Objekten, die wiederum viele solcher Beziehungen haben).

Vielen Dank im Voraus an die SO-Community.

+0

Sie könnten JSON obj verwenden, um speichern Sie das Objekt mit allen Verbänden, dann wiederherstellen, mit einer rekursiven Funktion. Ich habe in Best Practices gesehen, um Objekte zu deaktivieren oder durch Flags nicht verfügbar zu machen, du könntest ein Ablaufdatum hinzufügen und sie sind nicht abrufbar. – kinduff

Antwort

0

Sie können das Objekt mit den Verbänden zu JSON-Dump (or XML):

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

Beispiel erzeugt 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" } ] } 

von den letzten Beispiel Genommen für as_json

Und die post sind über das Unmarshalling verschachtelter Modelle. Sieht aus wie der Code zur Verfügung gestellt, können Sie durch den Aufruf Objekt mit allen Verbänden restaurieren:

user = User.from_json user_with_associations_as_json_string 
Verwandte Themen