論理削除とは
実際にはデータを削除せずに、削除されたと見なすフラッグと呼ばれるカラムを設定することでユーザーには削除しているかのように振る舞うことができることをさします。
例えばtweetsテーブルというものがあった時に、
そのテーブルにdeleted_flagというboolean型のカラムを追加しておきます。
この状態のときdeleted_flagカラムのデフォルト値はnullです。
こうすることによって、ユーザーにtweetの削除ボタンが押された時にdeleted_flagに1という値がセットすることで、その削除されたツイートとして扱うことができるのです。
物理削除
実際にSQLでDeleteされることをさし、データベースからも削除されます。そのため復元したり削除されたデータを参照することはできません。
論理削除のメリット
先ほどの例でも伝えたとうり、削除したかのように振る舞うだけなのですぐにデータの復元を実現が可能となります。また物理削除に比べても処理速度が早いことがメリットです。
論理削除のデメリット
・データベースにNUllというデータを作りたくない。(これはどうにかしたら解決可能だとは思いますが)
・where句での絞り込み検索を行うときにフラッグの条件を追加する必要がある。
コメント
@scivolaリンクをコピー このコメントを報告
8
default: false
にしておけばいいと思います。Rails で boolean のカラム名に
_flag
ってつけるの,あまり見ない気がします。単純にdeleted
でいいかも(?)それから,boolean でなく,
deleted_at: datetime
もよく使われるようです。null
だったら論理削除されてなくて,非null
だったらその日時に論理削除された,と。