【发布时间】:2011-10-29 13:51:22
【问题描述】:
只是想知道是否可以返回具有唯一性验证的所有属性的列表?例如,我有一个模型 Person - 我想返回“Person”中具有唯一性约束的属性列表。有什么想法吗?
【问题讨论】:
标签: ruby-on-rails validation activemodel
只是想知道是否可以返回具有唯一性验证的所有属性的列表?例如,我有一个模型 Person - 我想返回“Person”中具有唯一性约束的属性列表。有什么想法吗?
【问题讨论】:
标签: ruby-on-rails validation activemodel
你可以这样做
Person.validators.select { |v| v.is_a?(ActiveRecord::Validations::UniquenessValidator) }
获取 Person 模型的唯一性验证器列表。每个验证器都有一个 @attributes 实例变量,这可能是您需要的。
【讨论】:
以@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)得到一个字符串数组。
【讨论】: