DAY31 update_all / destroy / delete メソッド

TOKHEE·2024년 5월 9일
0

1. update_all メソッド

  • update_all メソッドは指定された条件に合うレコードを一度にアップデートします
  • データベースで直接アップデートクエリを実行するため非常に速く => 大量のデータを処理する際に便利
  • このメソッドを使用する際は、ActiveRecord コールバック(before_saveafter_save など)やバリデーションが実行されません
  • つまり、データの整合性が重要な状況では、適切な検証ロジックを別途実装する必要があります
  • 戻り値 = アップデートされたレコードの数、これによりアップデートの成功可否を間接的に判断できます
# 例:すべてのユーザーの active 状態を false に設定
User.update_all(active: false)

2. destroydelete メソッド

1) destroy メソッド

  • 指定されたレコードを削除し、関連するすべてのコールバック(before_destroyafter_destroy)を実行します
  • 削除プロセスで追加作業が必要な場合に便利です
  • destroy メソッドは関連するモデルとの関係を整理するなどの追加作業を行うため、データの整合性を維持するのに役立ちますが、処理時間が長くなる可能性がありますので注意が必要です

2) delete メソッド

  • delete メソッドはデータベースからレコードを直接削除し、いかなるコールバックも実行しません
  • delete は処理速度が速いですが、関連データが存在する場合、データの整合性問題が発生する可能性があります
# destroy 使用例
user = User.find(1)
user.destroy

# delete 使用例
User.delete(1)

0개의 댓글

관련 채용 정보