我想验证用户名不是以下之一。["admin", "moderator", "mod", "administrator"]
.
我确实使用自定义验证器验证这些名称在模型级别是不允许的。
class User < ActiveRecord::Base
...
validate :username_should_not_be
def username_should_not_be
not_allowed = ["admin", "moderator", "mod", "administrator"]
if not_allowed.include?(username.downcase)
error.add(:username, "is not allowed.")
end
end
...
end
我想知道我是否也可以在数据库级别验证这一点(也许使用迁移文件?)。对于上述特定情况可以这样做吗?
Rails 指南似乎也鼓励这种做法
在数据库级别使用一些约束可能是个好主意。此外,数据库级别的验证可以安全地处理一些在其他情况下难以实现的事情(例如在频繁使用的表中的唯一性)。