テーブルからレコードを削除する最善の方法を探しています。たとえば、ユーザーIDが多くのテーブルにあるユーザーがいます。このユーザーと、すべてのテーブルで彼のIDを持つすべてのレコードを削除します。
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
これは機能し、すべてのテーブルからユーザーのすべての参照を削除しますが、destroy_all
処理が非常に重いと聞いたので、を試しましたdelete_all
。ユーザーを自分のユーザーテーブルから削除するだけでid
、他のすべてのテーブルからはnullになりますが、レコードはそのまま残ります。このようなタスクを実行するための正しいプロセスを誰かが共有できますか?
関連するすべてのオブジェクトで関数がdestroy_all
呼び出されるのがわかりdestroy
ますが、正しいアプローチを確認したいだけです。
delete_all
、2)destroy_all
すべてのレコードがインスタンス化されて一度に1つが破棄されることにも注意してください。非常に大きなデータセットを使用すると、非常に遅くなる可能性があります。