だからあります
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
。
上記のマイクの戦術が最善だと思います。または、「仮定を立てる」ことを開始したい場合は、言及されたこれらのケースのラッパーを作成することもできます。
乾杯。