2016-11-28 58 views

回答

2

您可以使用exclusion validator

class User < ActiveRecord::Base 
    USERNAME_BLACKLIST = ['home'].freeze 

    validates :username, presence: true, exclusion: { in: USERNAME_BLACKLIST } 
end 

或者,你總是可以依靠一個自定義的驗證方法,使用validate代替validates,對於更復雜類型的驗證,這是不容易表達使用內置的驗證:

class User < ActiveRecord::Base 
    validates :username, presence: true 

    validate :username_not_on_restricted_list 

    protected 

    def username_not_on_restricted_list 
    errors.add(:username, :invalid) if username == 'home' 
    end 
end 

你也可以寫一個custom validator如果你打算重用THI在多個模型中的功能。

+0

你能解釋一下這個「凍結」方法在這種情況下完成了什麼? –

+0

@JoeMorano它可以防止修改常量的值。 Ruby將新值賦給常量時會警告您,但它不會阻止您修改這些值,這通常是不合需要的。 http://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/MutableConstant – meagar

相關問題