0
我有一個模型「用戶」屬性「用戶名」。我可以使用驗證來防止使用用戶名「home」創建用戶嗎?如何防止某個屬性成爲某個值?
class User < ActiveRecord::Base
validates :username, presence: true
end
我有一個模型「用戶」屬性「用戶名」。我可以使用驗證來防止使用用戶名「home」創建用戶嗎?如何防止某個屬性成爲某個值?
class User < ActiveRecord::Base
validates :username, presence: true
end
您可以使用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在多個模型中的功能。
你能解釋一下這個「凍結」方法在這種情況下完成了什麼? –
@JoeMorano它可以防止修改常量的值。 Ruby將新值賦給常量時會警告您,但它不會阻止您修改這些值,這通常是不合需要的。 http://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/MutableConstant – meagar