3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】mark_for_destruction を 使って特定の条件のレコードを削除する。

Last updated at Posted at 2020-11-28

使用ケース

「特定のカラムが空である場合にはそのレコードを削除したい」みたいなときに便利です。
そのレコードに削除マークをつけておくと削除されるイメージで実装できます。

サンプルコード

前提として 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 文を使えば色んな条件で適用できますし、アソシエーションしているレコードも削除できたりするので色々と応用が効きそうですね。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?