梅雨が明けてもなかなかスッキリ晴れませんね。。。
地域により気温が体温越えのところもありますので、熱中症などに十分注意して過ごしましょう。
さて、今回は削除しても残しておける論理削除を実装するGemをご紹介します。
論理削除をしようとすると削除用のカラムを用意して、削除した時は削除日時をセットする処理を追加して、
削除分も表示する場合はそれ用のsqlを記述して… と、1つ1つの処理が結構ややこしかったりします。
ただ、RailsではparanoiaというGemを使用すると簡単に扱うことができます。
早速設定の方法からそれぞれの内容をみていきましょう!
1.Gemのインストール
Gemfileに以下を追加します。
1 | gem 'paranoia' |
※bundle installをお忘れなく!
2.論理削除を指定するモデルに削除用のカラムの追加と、定義を追加します
ーカラム追加
1 2 3 4 5 6 | class 〇〇 < ActiveRecord::Migration def change add_column :モデル名, :deleted_at, :datetime add_index :モデル名, :deleted_at end end |
※削除カラムを追加する際は、カラム名に「deleted_at」を使用するようにしてください。
※migration作成後は、db:migrateをお忘れなく!
ーモデルに定義追加
1 | acts_as_paranoid |
以上で設定完了です。
どうですか?2ステップなのでかなり簡単ですよね!
3.削除分も表示する
削除した分も表示したい場合があると思いますので、削除分も表示させる場合はこちらを使用すれば可能です。
1 | モデル.with_deleted |
まとめ
いかがでしたでしょうか?
論理削除試してみたいけど手作業でデータの更新は大変だなぁと感じていた方は、ぜひこちらのGemを使用してみてください。