Make it possible to disable tenants

Note we could use `acts_as_paranoid` with the `without_default_scope`
option, but we aren't doing so because it isn't possible to consider
deleted records in uniqueness validations with the paranoia gem [1].
I've added tests for these cases so we don't accidentally add
`acts_as_paranoid` in the future.

Also note we're extracting a `RowComponent` because, when
enabling/disabling a tenant, we're also enabling/disabling the link
pointing to its URL, and so we need to update the URL column after the
AJAX call.

[1] See issues 285 and 319 in https://github.com/rubysherpas/paranoia/
This commit is contained in:
Javi Martín
2022-12-19 16:32:31 +01:00
parent 0dac6ead77
commit 25435b0297
18 changed files with 204 additions and 11 deletions

View File

@@ -27,6 +27,24 @@ class Admin::TenantsController < Admin::BaseController
end
end
def hide
@tenant.hide
respond_to do |format|
format.html { redirect_to admin_tenants_path, notice: t("admin.tenants.hide.notice") }
format.js { render template: "admin/tenants/toggle_enabled" }
end
end
def restore
@tenant.restore
respond_to do |format|
format.html { redirect_to admin_tenants_path, notice: t("admin.tenants.restore.notice") }
format.js { render template: "admin/tenants/toggle_enabled" }
end
end
private
def tenant_params