使用ケース
「特定のカラムが空である場合にはそのレコードを削除したい」みたいなときに便利です。
そのレコードに削除マークをつけておくと削除されるイメージで実装できます。
サンプルコード
前提として users は name カラムを持つとします。
name の値が nil か 空文字であればそのレコードを削除したいみたいな時は、以下のように実装できると思います。
今回はインスタンスメソッドを定義し、before_validationのコールバックで実行しました。
app/models/user.rb
before_validation :delete_user_if_name_blank
def delete_user_if_name_blank
self.mark_for_destruction if name.blank?
end
if 文を使えば色んな条件で適用できますし、アソシエーションしているレコードも削除できたりするので色々と応用が効きそうですね。