hello-world
webエンジニアのメモ。とりあえずやってみる。

[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 メソッドを実行しています。

参考


Related #active_admin

[rails]Active Adminの編集画面に登録済みの画像プレビューを表示する

先日のActiveAdminまとめに続き今回もActive Adminネタです。

active_adminでカスタムfilter(select box)を設置する

active\_adminで管理画面を作る際にデフォルトでfilterを作ってくれますが、select boxを使いたい部分がテキスト入力になっていたりします。