Rails:从模型中获取具有唯一性验证的属性列表

发布于 2024-11-29 23:18:56 字数 86 浏览 0 评论 0原文

只是想知道是否可以返回具有唯一性验证的所有属性的列表?例如,我有一个模型 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

依 靠 2024-12-06 23:18:56

您可以执行类似

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.

梦屿孤独相伴 2024-12-06 23:18:56

基于 @eugen 的答案,以下是使用唯一性验证器列出所有属性的代码:

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

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文