2

只是想知道是否可以返回具有唯一性验证的所有属性的列表?例如,我有一个模型 Person - 我想返回“Person”中具有唯一性约束的属性列表。有任何想法吗?

4

2 回答 2

8

你可以做类似的事情

Person.validators.select { |v| v.is_a?(ActiveRecord::Validations::UniquenessValidator) }

获取 Person 模型的唯一性验证器列表。每个验证器都有一个@attributes实例变量,这就是您可能需要的。

于 2011-08-18T08:34:04.310 回答
0

@eugen 的答案的基础上,这里是列出所有具有唯一性验证器的属性的代码:

self.class.validators.collect do |validator|
  validator.attributes if validator.is_a?(ActiveRecord::Validations::UniquenessValidator)
end.flatten.compact.uniq

它返回一个符号数组,.map(&:to_s)在末尾添加以获取字符串数组。

于 2021-02-01T15:51:18.077 回答