Ich denke, es ist wichtig ein „rückgängig machen“ Methode ala gmail zu haben, wenn Aufzeichnungen statt Anzeigen eines lästigen Popup zu zerstören, die sagt: „Bist Du sicher?“.Was ist der beste Weg, Google Mail-Stil "rückgängig machen" in Rails zu implementieren?
Die Art und Weise, die ich umgesetzt habe dies eine „deleted_at“ Timestamp-Spalte in dem Modell haben, ist die timestamped wird, wenn Methode zerstören genannt wird
def destroy
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, Time.now)
...
end
Um revert/Undo Ich werde setzen nur die gleiche Spalte auf Null
def revert
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, nil)
...
end
ich werde nur eine Bedingung hinzufügen müssen abzufiltrieren „gelöscht“ foos, wenn ich das find-Methode aufrufen. Vielleicht eine Cron- oder Hintergrund-Aufgabe setzen, um "gelöschte" Foos nach einiger Zeit wirklich zu zerstören.
Funktioniert für mich und einfach zu implementieren, aber ich bin neugierig, ob es eine bessere Möglichkeit gibt, diese Funktion zu implementieren? Vielleicht gibt es ein Plugin oder ein Juwel, das das bietet, von dem ich nichts weiß?
Ist es dir wirklich wichtig, wenn es gelöscht wurde? Ist eine Flagge nicht ausreichend? –
Ja, es ist mir egal, wann es gelöscht wurde, aber dieses Wissen könnte nützlich sein. Ich denke, Timestamps macht eine gute Flagge. – JasonOng
Ich stimme der allgemeinen Stimmung zu.Ein mögliches Problem bei der Vorwegnahme solcher Bedürfnisse besteht jedoch darin, dass andere Entwickler möglicherweise dazu verleitet werden, nach dem Ort zu suchen, an dem diese (Zeitstempel-) Informationen aktuell verwendet werden. Wenn es irgendwo nicht verwendet wird, stellt es einen losen Faden dar, der für Uneingeweihte oft frustrierend und zeitraubend ist. – Magne