validates_uniqueness_of 和唯一性的验证有什么不同吗?

is there any difference in validation of validates_uniqueness_of and uniqueness?

class Category < ApplicationRecord
    validates :name ,presence: true
    validates_uniqueness_of :name
end

class Category < ApplicationRecord
    validates :name ,presence: true,uniqueness: true
end

给定的两个模型的验证有什么不同吗?

有两种方法可以准确回答这个问题:

1 - 它的行为方式完全相同。

从这个意义上说,没有区别。 validates_uniqueness_of 生成与 validates 上的 :uniqueness 标志完全相同的验证。

2 - 有理由使用标志

就读取模型而言,标志很有帮助,因为它们允许您将所有验证放在同一位置的属性(此处为名称)上。因此,当您关闭时,您会看到名称验证,并且您可以确信您知道那一行上的所有内容。

还值得注意的是,旗帜是一种较新的样式,并且可能会在将来的某个时候从 Rails 中删除较旧、更冗长的样式。