だからあります
record.new_record?
何かが新しいかどうかを確認するには
何かが途中にあるかどうかを確認する必要があります。
record = some_magic
record.destroy
record.is_destroyed? # => true
そんな感じ。破壊するとオブジェクトがフリーズするので、フリーズしますか?ある種の作業ですが、このタスクに明示的に何かありますか?
だからあります
record.new_record?
何かが新しいかどうかを確認するには
何かが途中にあるかどうかを確認する必要があります。
record = some_magic
record.destroy
record.is_destroyed? # => true
そんな感じ。破壊するとオブジェクトがフリーズするので、フリーズしますか?ある種の作業ですが、このタスクに明示的に何かありますか?
回答:
あなたはこれを行うことができます。
Record.exists?(record)
ただし、これはデータベースに影響を与えますが、実際には必要ありません。私が知っている他の唯一の解決策は、IVが述べたようにコールバックを行うことです。
attr_accessor :destroyed
after_destroy :mark_as_destroyed
def mark_as_destroyed
self.destroyed = true
end
そして、チェックしrecord.destroyedます。
object.destroyed?
DEPRECATION WARNING: You are passing an instance of ActiveRecord::Base to 存在しますか?. Please pass the id of the object by calling .id.
Record.exists?破壊されたレコードをリロードしてそれがであるかどうかを確認できないため、コントローラーの仕様にはまだ必要ですdestroyed?。ただし、チェックするインスタンス変数がある場合はassings、を使用できますdestroyed?。
これはもうすぐです。最新のRidingRailsの投稿では、次のように述べています。
そして最後に、それは必ずしもBugMash関連ではありませんが、JoséValim-他の何十ものコミットの中で-model.destroyed?を追加しました。この気の利いたメソッドは、現在表示しているインスタンスが正常に破棄された場合にのみtrueを返します。
だからあなたは行きます。近日公開!
record.destroyed中?正常に動作し、trueまたはfalseを返します。これを少し乾かして、コントローラーでdestroyを呼び出す行にif条件を作成することもできます。
record = Object.find(params[:id])
if record.destroy
... happy path
else
... sad path
end
この投稿はゲームの少し遅いことを認識してください。しかし、誰かがこれについてもっと話したいと思うなら、私はゲームです!補足:モデルでafter_destroy検証も行いましたが、それが機能している間、このような別のメソッドはやり過ぎのようです;)
destroyオブジェクトを実行してもfreeze(私が知る限り)への呼び出し以外は何も返されないのでfrozen?、最善の策だと思います。あなたの他のオプションはActiveRecord::RecordNotFound、あなたが次のようなことをした場合から救助することですrecord.reload。
上記のマイクの戦術が最善だと思います。または、「仮定を立てる」ことを開始したい場合は、言及されたこれらのケースのラッパーを作成することもできます。
乾杯。