Ruby Rails语法澄清

问题描述 投票:-1回答:1
class Person < ApplicationRecord
  validates :name, uniqueness: { case_sensitive: false }
end

当模型具有上述定义时,幕后究竟发生了什么?

我的猜测是存在一些validates方法,并且参数与符号名称一起传递。什么是第二个参数?哈希值是哈希值?

ruby-on-rails
1个回答
1
投票

首先验证:name让我们知道Person没有name属性是无效的。

第二次验证uniqueness

此帮助程序在对象保存之前验证属性的值是唯一的。它不会在数据库中创建唯一性约束,因此可能会发生两个不同的数据库连接创建两个记录,这些记录对于您想要唯一的列具有相同的值。为避免这种情况,您必须在数据库中的该列上创建唯一索引。

第三个{ case_sensitive: false }

还有一个case_sensitive选项,可用于定义唯一性约束是否区分大小写。此选项默认为true

最后验证:名称,唯一性:{case_sensitive:false}

它表示在Person模型名称属性必须存在且唯一性不区分大小写。

© www.soinside.com 2019 - 2024. All rights reserved.