class Person < ApplicationRecord
validates :name, uniqueness: { case_sensitive: false }
end
当模型超乎定义时,幕后究竟发生了什么?
我的猜测是存在某种validates
方法,并且参数传递了符号名称。什么是第二参数?散列值是散列吗?
答案 0 :(得分:1)
第一次验证:name
告诉我们,没有 name 属性,人是无效的。
第二次验证uniqueness
此帮助程序会在保存对象之前立即验证该属性的值是否唯一。它不会在数据库中创建唯一性约束,因此可能发生两个不同的数据库连接为您打算唯一的列创建两个具有相同值的记录。为了避免这种情况,您必须在数据库中的该列上创建一个唯一索引。
第三{ case_sensitive: false }
还有一个 case_sensitive 选项,可用于定义唯一性约束是否区分大小写。此选项默认为true
最后验证:name,唯一性:{case_sensitive:false}
这意味着在“人”模型名称属性中,必须以唯一性形式存在,并且不区分大小写。