我有一个名为“User”的模型,其属性为“Username”。我可以使用验证来阻止使用用户名“home”创建用户吗?
class User < ActiveRecord::Base
validates :username, presence: true
end
答案 0 :(得分: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。