valid? 的意思是什么呢? 我知道是用来测试数据能否通过校验的。但是默认是使用哪个验证器进行校验呢?
如果是你,你会选用什么作为默认的?
它会调用model内定义的所有validates验证方法,例如在 model 中定义了以下三个验证: validates :age, :numericality => true validates :username, :presence => true validates :username, :uniqueness => true 则valid?就会检测所有的验证是否通过:年龄是否是数字,用户名是否存在且唯一 validates是ActiveModel::Validations的类方法
model
validates
validates :age, :numericality => true validates :username, :presence => true validates :username, :uniqueness => true
valid?
ActiveModel::Validations
可以自己在 rails console 里试试,先写一些验证,然后 new 一个实例,此时如果你看 errors,应该是 nil。这表明 model 里的验证尚未运行。然后对实例执行 valid?方法,你看到的结果无非就是 true or false,然后再看一下实例的 errors,你就会看到所有的验证错误信息。和你之前写的验证对照一下,你就知道哪些生效了(一般都是全部生效的)。
#2 楼 @lewisgrady 嗯,明白了,非常感谢!另外想问您: validates :redirect_uri, :redirect_uri => true 的意思是什么呢?由哪一个验证器来验证 redirect_uri 的合法性呢?