Rails两种验证方法的用法

本文概述

Rails验证为每个Active Record模型类定义有效状态。它们用于确保仅将有效的详细信息输入到数据库中。 Rails使向模型类添加验证变得容易, 并允许你创建自己的验证方法。使用内置的验证DSL, 你可以执行多种验证。

如果Active Record模型类的验证失败, 则将其视为错误。每个Active Record模型类都维护一个错误集合, 当发生验证错误时, 这些错误集合会向用户显示适当的错误信息。

Rails内置的验证方法

Method Description
validates_acceptance_of 用户通过选中复选框来完成此验证, 以接受服务条款协议
validates_associated 验证关联对象本身是否全部有效。与任何类型的协会合作。
validates_confirmation_of 它验证用户是否在第二个输入字段中输入了匹配的信息, 例如密码或电子邮件。
validates_each 针对块验证每个属性。
validates_exclusion_of 验证属性不在特定的可枚举对象中。
validates_format_of 使用正则表达式验证属性的值, 以确保其格式正确。
validates_inclusion_of 验证属性值在特定的可枚举对象中是否可用。
validates_length_of 验证属性的长度是否与指定的长度限制匹配。
validates_numericality_of 验证属性是否为数字。
validates_presence_of 验证该属性是否为空。
validates_size_of 这是validates_length_of的别名
validates_uniqueness_of 验证属性在数据库中是否唯一。

跳过验证

下列Rails方法跳过验证并将对象保存到数据库中, 而不管其有效性如何。应谨慎使用它们。

  • decrement!
  • decrement_counter
  • increment!
  • increment_counter
  • toggle!
  • touch
  • update_all
  • update_attribute

有效?无效吗?(valid? and invalid?)

保存Active Record对象之前, Rails会进行验证。如果产生任何错误, 则不保存对象。

有效吗?触发你的验证, 如果未发现错误, 则返回true, 否则返回false。

例:

class Person < ApplicationRecord
??validates :name, presence: true
end
?
Person.create(name: "John Cena").valid? # => true
Person.create(name: nil).valid? # => false

无效的?是有效的反向吗?它触发你的验证, 如果无效则返回true, 否则返回false。


微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?