2011-02-07 11 views
16

私は3はRuby on Railsを使用していますが、私は次のコードがあります戻り値の種類を知っていただきたいと思います:ActiveRecord 'destroy'メソッドは、Ruby on Railsでブール値を返しますか?

@user.destroy 

を私は何らかの方法このように成功障害上のケースを処理することが必要:

if @user.destroy 
    puts "True" 
else 
    puts "false" 
end 

可能でしょうか?もしそうなら、どうですか?

答えて

27

あなたが尋ねる前に求めているものを試してみてください。あなたが持っているものはうまくいくでしょう。

破棄が機能する場合は、オブジェクトが返されます(if文でtrueになります)。そうでない場合は、失敗した理由に応じてfalseが返されるか、例外が発生します。

+4

明示的に、ドキュメントを引用してみましょう: "before_destroyコールバックがfalseを返すと、アクションはキャンセルされ、destroyはfalseを返します。"(http://edgeapi.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-破壊する)。 – amoebe

13

可能です。 destroyメソッドは、破棄されたオブジェクトを返します。 あなたは、オブジェクトが効果的に破壊されたかどうかを確認するために、このActiveRecordのオブジェクトにdestroyed?を使用することもできます。

if @user.destroyed? 
    puts "True" 
else 
    puts "false" 
end 
関連する問題