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