Also da ist
record.new_record?
Um zu überprüfen, ob etwas neu ist
Ich muss überprüfen, ob etwas auf dem Weg nach draußen ist.
record = some_magic
record.destroy
record.is_destroyed? # => true
Sowas in der Art. Ich weiß, dass das Zerstören das Objekt einfriert, also eingefroren? Art von Arbeiten, aber gibt es etwas explizit für diese Aufgabe?
ruby-on-rails
ruby
activerecord
Daniel Huckstep
quelle
quelle
object.destroyed?
DEPRECATION WARNING: You are passing an instance of ActiveRecord::Base to
existiert?. Please pass the id of the object by calling
.id.
Record.exists?
in Controller-Spezifikationen verwendet werden, da ich zerstörte Datensätze nicht neu laden kann, um zu überprüfen, ob dies der Fall istdestroyed?
. Aber wenn ich eine Instanzvariable zum Überprüfen habeassings
, kann ich sie verwendendestroyed?
.Mach es einfach:
Details finden Sie hier ActiveRecord :: Persistence
quelle
Das kommt sehr bald. Im neuesten Riding Rails- Beitrag heißt es:
Hier bitteschön. Kommt bald!
quelle
Während record.destroyed? funktioniert einwandfrei und gibt true oder false zurück. Sie können dies auch ein wenig TROCKNEN und die if-Bedingung in der Zeile, die Sie aufrufen, in Ihrem Controller erstellen.
Erkenne, dass dieser Beitrag etwas spät im Spiel ist. Aber sollte jemand mehr darüber diskutieren wollen, bin ich ein Spiel! Randnotiz: Ich hatte auch eine after_destroy-Validierung für mein Modell und während es funktionierte, scheint eine separate Methode für so etwas wie ein Overkill zu sein;)
quelle
destroy
Wenn Sie ein Objekt zurückgeben, wirdfreeze
(soweit ich weiß) nichts anderes als ein Anruf zurückgegeben. Ich denke, diesfrozen?
ist Ihre beste Wahl. Ihre andere Möglichkeit ist die Rettung,ActiveRecord::RecordNotFound
wenn Sie so etwas getan habenrecord.reload
.Ich denke, Mikes Taktik oben könnte die beste sein, oder Sie könnten einen Wrapper für diese genannten Fälle schreiben, wenn Sie anfangen möchten, Annahmen zu treffen.
Prost.
quelle
Ohne mehr über die Logik Ihrer App zu wissen, denke ich, dass eingefroren? ist die beste Wahl.
Andernfalls könnten Sie Ihren Modellen, die Sie in den Rückrufen auslösen, sicherlich ein "zerstörtes" Attribut hinzufügen, das überprüft werden könnte, wenn Sie eine genauere Lösung wünschen.
quelle