Rails:从模型中获取具有唯一性验证的属性列表
只是想知道是否可以返回具有唯一性验证的所有属性的列表?例如,我有一个模型 Person - 我想返回“Person”中具有唯一性约束的属性列表。有什么想法吗?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以执行类似
Person.validators.select { |v| 的 操作v.is_a?(ActiveRecord::Validations::UniquenessValidator) }
获取 Person 模型的唯一性验证器列表。每个验证器都有一个
@attributes
实例变量,这就是您可能需要的。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.基于 @eugen 的答案,以下是使用唯一性验证器列出所有属性的代码:
它返回一个符号数组,在末尾添加
.map(&:to_s)
以获取字符串数组。Building up on @eugen's answer, here is the code to list all attributes with a uniqueness validator:
It returns an array of symbols, add
.map(&:to_s)
at the end to get an array of strings.