使用之间有区别
redux
或
validates :foo, uniqueness: true
?
我知道这是一个简单的问题,但是Google didn't help
何时以及为何要在另一个上使用它?
答案 0 :(得分:5)
validates
方法是Rails提供的所有默认validators的快捷方式。因此,validates :foo, uniqueness: true
将在后台触发UniquenessValidator
。 validates
的源代码可以在in the API doc here中找到。如此处所示,它基本上会触发所传递选项的验证程序,并在传递无效选项的情况下引发错误。
validates_uniqueness_of也会触发UniquenessValidator
,与validates
相同。它的源代码是
# File activerecord/lib/active_record/validations/uniqueness.rb, line 233
def validates_uniqueness_of(*attr_names)
validates_with UniquenessValidator, _merge_attributes(attr_names)
end
唯一的区别是使用validates_uniqueness_of
,我们只能验证唯一性,而不能传递其他选项,而validates
则接受多个选项。因此,我们可以使用validates
进行以下验证:
validates :name, presence: true, uniqueness: true, <some other options>
但是validates_uniqueness_of
不可能做到这一点。