ridgepoleの部分インデックスで毎回createとdrop indexをさせない書き方

railsでparanoiaとか使っていて、
mysqlで論理削除にdeleted_atがnullかどうかで論理削除判定していると
dbのuniq indexで辛い感じになります。

postgresqlでは部分インデックスなるものがあり、deleted_atがnullのものをuniq制約の条件に含めないとかいうことができます。

部分インデックス


ridgepoleではこう書くと毎回create index drop indexしません。

1
add_index "users", ["email"], name: "uniq_email_idx", unique: true, where: '(deleted_at IS NULL)'  

本日は大雪らしいので早く帰りましょう。

Comments