2011-06-26 3 views
1

は、今私が持っている:Railsはdestroy_allを使っているとき、レコードの数を返す方法はありますか?

PollVote.destroy_all(:user_id => record.user_id, :poll_id => record.poll_id) 

は私が削除された番号を、取り戻すことができます方法はありますか? 0以上?

deleted_count = PollVote.destroy_all(:user_id => record.user_id, :poll_id => record.poll_id) 

deleted_countは0以上ですか?

おかげで破壊されたオブジェクトのコレクションを返しますdestroy_allドキュメント、パー

答えて

6

。あなたがdelete_allを使用している場合、それはあなたが望んでいないときのために(役立つを削除しているレコードのすべて破棄のコールバックをスキップします

destroyed = PollVote.destroy_all(:user_id => record.user_id, :poll_id => record.poll_id) 

destroyed_count = destroyed.length # => The number of records destroyed 
+1

私が気づいた問題 - レコードの一部がエラーを追加し、before_destroy'コールバック 'でfalseを返す場合は、長さは変わりません。実際に破壊されたレコードの数より大きい 'destroyed_count'を報告することになります。 (少なくとも、この回答が掲載された時点のバージョンのレール用) – rthbound

2

:これを知って、あなたがする必要があるのは、そのコレクションのlengthを取得していますこれらは実行されます)、削除されたレコードの数が返されます。

関連する問題