开发者

Rails: Getting list of attributes with uniqueness validations from a model

Just wondering if it's possible to return a list of all attributes which possess a uniqueness validation? For example, I have a model Person - I'd like to return a list of the attributes in 'Person' which have开发者_运维问答 a uniqueness constraint. Any ideas?


You can do something like

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

to get the list of uniqueness validators for the Person model. Each validator has an @attributes instance variable, and that's what you probably need.


Building up on @eugen's answer, here is the code to list all attributes with a uniqueness validator:

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

It returns an array of symbols, add .map(&:to_s) at the end to get an array of strings.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜