【问题标题】:is there any difference in validation of validates_uniqueness_of and uniqueness?validates_uniqueness_of 和唯一性的验证有什么区别吗?
【发布时间】:2020-01-10 09:37:47
【问题描述】:
class Category < ApplicationRecord
validates :name ,presence: true
validates_uniqueness_of :name
end
class Category < ApplicationRecord
validates :name ,presence: true,uniqueness: true
end
给定的两个模型的验证有什么不同吗?
【问题讨论】:
标签:
ruby-on-rails
activerecord
rails-activerecord
【解决方案1】:
有两种方法可以准确回答这个问题:
1 - 它的行为方式完全相同。
从这个意义上说,没有区别。 validates_uniqueness_of 生成与 validates 上的 :uniqueness 标志完全相同的验证。
2 - 使用标志是有原因的
在阅读模型方面,标志很有帮助,因为它们允许您将所有验证放在同一个位置的属性(这里是名称)上。因此,当您向下搜索时,您会看到名称上的验证,并且您可以确信您知道它们都在那条线上。
还值得注意的是,标志是一种较新的样式,并且可能会在将来的某个时候从 Rails 中删除旧的、更冗长的样式。