2012-10-10 3 views

答えて

58

私はそれを削除するのではなく、破壊使用することをお勧めだと思います:

Manager.where(:manager_level => 5).destroy_all 
+5

間違いなく有効ですが、「各レコードをインスタンス化してdestroyメソッドを呼び出すことで、条件に合致するレコードを破棄します。」 (http://apidock.com/rails/ActiveRecord/Relation/destroy_all)これは、大きな結果セットでは非常に遅くなる可能性があります。 –

+0

ええ、私はモデルを一貫して保つことを考えていました。 – MurifoX

+4

@MurifoX - あなたは破壊が削除より良いと思う理由を説明できますか?必ずしも一致しているわけではありませんが、あなたの答えをより完全にするのに役立ちます。 –

12

これは動作するはずです:

Manager.where(:manager_level => 5).delete_all 

注:これは依存レコードを削除しません。

23

はこれを試してみてください:

Manager.delete_all(manager_level: 5) 
+0

1.私は削除するかを指定するために変数を使用する必要があります。 2.テーブルにはインデックスがありません。これは他の2つのテーブル間のコネクタテーブルです。 –

+0

私のために働かなかった。参照整合性のためにエラーが発生しました。 –

+0

これは受け入れられた回答である必要があります。他のクエリはDELETINGの前にSELECTを試みるため、大きなデータセットでパフォーマンスの問題が発生します。 – toobulkeh

関連する問題