2014-02-22 47 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 
相關問題