2018.08.01 Wed

Railsで論理削除を扱うならparanoiaを使用しよう!


みなさんこんにちは、ジーニアスウェブの中武です。

梅雨が明けてもなかなかスッキリ晴れませんね。。。
地域により気温が体温越えのところもありますので、熱中症などに十分注意して過ごしましょう。

さて、今回は削除しても残しておける論理削除を実装する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を使用してみてください。

WRITERこの記事を書いた人

山田

山田

webのシステム開発などを行なっております。よろしくお願い致します。

webのシステム開発などを行なっております。よろしくお願い致します。

FREE DOWNLOAD

顧客獲得に成功した24社の成功事例を1冊にまとめました。
顧客獲得にお困りの方も、そうでない方も、一度お読みいただくことをお勧めします。

MORE VIEW