只是想知道是否可以返回具有唯一性验证的所有属性的列表?例如,我有一个模型Person - 我想返回'Person'中具有唯一性约束的属性列表。有什么想法吗?
答案 0 :(得分:6)
您可以执行类似
的操作 Person.validators.select { |v| v.is_a?(ActiveRecord::Validations::UniquenessValidator) }
获取Person模型的唯一性验证器列表。每个验证器都有一个@attributes
实例变量,这就是你可能需要的。
答案 1 :(得分:0)
以 @eugen's answer 为基础,以下是使用唯一性验证器列出所有属性的代码:
self.class.validators.collect do |validator|
validator.attributes if validator.is_a?(ActiveRecord::Validations::UniquenessValidator)
end.flatten.compact.uniq
它返回一个符号数组,在末尾添加.map(&:to_s)
得到一个字符串数组。