确保在设计身份验证中销毁/删除/删除用户时保留最后一个管理员

时间:2014-02-22 13:05:00

标签: ruby-on-rails devise rails-admin

我是rails的新手。我正在开发一个需要管理员角色的小应用程序,可以添加,修改和删除内容。因此,某些模型/视图应该对一般用户隐藏,只有管理员才能通过身份验证访问它们。

为实现这一目标,我使用了'rails_admin''设计'宝石。我不希望sign_up页面显示给genral用户,所以我删除了删除:可以从我的Admin模型注册。

现在一切似乎都很好但是,当我通过管理员登录时,从我的仪表板中删除每个管理员,因为我已经删除了sign_up页面,所以无法再次登录。

所以我想确保我的上一个用户仍然存在。删除最后一个用户时,应向用户显示警告/通知。我为此编写了以下代码

private
   def ensure_an_admin_remains
      if Admin.count.zero?
         raise "Can't delete last user"
      end
   end

这会抛出错误但我的浏览器会显示所有错误详细信息。我希望它被显示为flash消息。我想我必须改变设计控制器的破坏方法。但我不知道在哪里找到它以及如何进行必要的更改。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

在控制器......

def destroy 
  admin = Admin.find(params[:id])
  begin 
    admin.destroy
    redirect_to admins_path, notice: 'Admin destroyed.'
  rescue => e 
    redirect_to admins_path, alert: e.message 
  end
end