hello-world.jp.net
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のindexページで条件に応じてstyleを変える

active adminは便利ですが、カスタマイズの必要が出てきた時に公式ドキュメントだけだとかゆいところに手が届かなかったりします。

[Rails]ActiveAdminでCSVダウンロード機能をカスタマイズする

ActiveAdminにはcsvダウンロード機能がデフォルトついているのですが、デフォルトのままだと一括でcsvデータを取得することができません。(管理画面表示1ページあたりの表示件数分になるので30件しか取得できませんでした)