[rails][active_admin]paranoiaで論理削除したデータを管理画面で一覧表示する方法
migrationファイルにdeleted_atを追加することで、手軽に論理削除を実装できる paranoia
こちらのgemで論理削除を行った場合、active_adminで作った管理画面の一覧ページからも非表示状態になってしまいます。
「管理画面では論理削除されたデータは削除済みとして表示したい」という場合の対応法をメモ
# app/admin/user.rb
ActiveAdmin.register User do
permit_params :name
index do
selectable_column
id_column
column :name
column :deleted do |f|
f.deleted_at ? "削除" : nil # 削除済みの場合は"削除"と表示
end
end
# 削除済みのデータも取得するようにscopeを変更
controller do
def scoped_collection
User.with_deleted
end
end
end
scoped_collectionメソッド内で削除済みデータも取得するように User.with_deleted メソッドを実行しています。