📅  最后修改于: 2023-12-03 15:19:42.280000             🧑  作者: Mango
在 Rails 中,验证器是用来验证模型数据是否符合指定要求的工具。通过使用验证器,我们可以确保数据的完整性和一致性。
Rails 提供了许多内置的验证器,下面是其中一些常用的验证器,还有其他更多验证器可以查看官方文档。
presence
presence
验证器用来验证属性是否为空。例如:
class User < ApplicationRecord
validates :name, presence: true
end
以上代码表示 User
模型的 name
属性必须存在,否则无法保存。
uniqueness
uniqueness
验证器用来验证属性的唯一性。例如:
class User < ApplicationRecord
validates :email, uniqueness: true
end
以上代码表示 User
模型的 email
属性必须是唯一的,否则无法保存。
length
length
验证器用来验证属性的长度。例如:
class User < ApplicationRecord
validates :password, length: { minimum: 6, maximum: 20 }
end
以上代码表示 User
模型的 password
属性必须在 6 到 20 个字符之间,否则无法保存。
format
format
验证器用来验证属性是否符合指定的正则表达式。例如:
class User < ApplicationRecord
validates :email, format: { with: /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i }
end
以上代码表示 User
模型的 email
属性必须符合指定的正则表达式,否则无法保存。
除了内置的验证器之外,Rails 还支持自定义验证器。自定义验证器通常用于复杂的验证需求,例如依赖其他属性来验证某个属性的值。
下面是一个示例代码:
class Order < ApplicationRecord
validate :expiration_date_cannot_be_in_the_past
def expiration_date_cannot_be_in_the_past
if expiration_date.present? && expiration_date < Date.today
errors.add(:expiration_date, "can't be in the past")
end
end
end
以上代码表示 Order
模型的 expiration_date
属性不能早于今天。