2014-02-22 44 views
0

我是rails的新手。我正在开发一个需要管理角色的小型应用程序,他可以添加,修改和删除内容。因此,一般用户应隐藏某些模型/视图,只有管理员可以通过身份验证访问它们。确保最后的管理员仍然保留,同时销毁/删除/删除设计认证中的用户

为了达到这个目的,我使用了'rails_admin''devise'宝石。我没有希望sign_up页面显示给普通用户,所以我删除了删除:从我的管理模型注册。

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

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

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

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

有人可以帮助我吗?

+0

是否确定要删除其他管理员? – ChrisBarthol

+0

现实中没有,但可能会出现这样一种情况,我必须为某人(已知)授予管理员权限才能执行某些更新。我应该可以稍后删除它。 如果匆忙出错,我甚至会删除我的角色。整个应用程序(至少管理员端)被锁定。我不希望发生这种情况。 – Kranthi

+0

你必须提供一些关于你得到的错误的更多信息。如果你想闪烁消息,只需使用闪光灯而不是加注。 'flash [:notice] =“无法删除最后一个用户”# http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html – ChrisBarthol

回答

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 
相关问题