0

我想避免有人可以使用用戶名'Admin'創建用戶。我使用這個用戶名作爲主機來控制我的應用程序的一些功能。我知道有驗證的模型記錄的唯一性表達:驗證唯一性,但僅當選擇「管理員」作爲用戶名時

validates_uniqueness_of 

但我只想說的用戶名「管理員」不能創建兩次。我希望有人有一個想法!由於

回答

2

您可以使用conditionals in your validation做到以下幾點:

class Model 
    validates :username, uniqueness: true, if: :admin? 

    def admin? 
    username.downcase == 'admin' 
    end 
end 

隨着中說,他們會拿走我的開發卡,如果我不從這樣氣餒。

僅根據用戶名是否爲admin來設置管理員帳戶正在爲您的安全性設置妥協。看看像ActiveAdmin這樣的管理您的管理員帳戶,以便他們在至少與您的用戶帳戶分開。

+0

對不起,我寫了你的代碼到我的模型中,我總是得到錯誤'未定義的方法'管理?'你有任何線索爲什麼? –

+0

@JohnSmith抱歉有一個語法錯誤 - 應該是':admin?' –

1

或只是validates_uniqueness_of :username, if: -> {username == 'admin'}在您的模型。