class Person < ApplicationRecord
validates :name, uniqueness: { case_sensitive: false }
end
当模型具有上述定义时,幕后究竟发生了什么?
我的猜测是存在一些validates
方法,并且参数与符号名称一起传递。什么是第二个参数?哈希值是哈希值?
首先验证:name
让我们知道Person没有name属性是无效的。
第二次验证uniqueness
此帮助程序在对象保存之前验证属性的值是唯一的。它不会在数据库中创建唯一性约束,因此可能会发生两个不同的数据库连接创建两个记录,这些记录对于您想要唯一的列具有相同的值。为避免这种情况,您必须在数据库中的该列上创建唯一索引。
第三个{ case_sensitive: false }
还有一个case_sensitive选项,可用于定义唯一性约束是否区分大小写。此选项默认为true
最后验证:名称,唯一性:{case_sensitive:false}
它表示在Person模型名称属性必须存在且唯一性不区分大小写。