47

我如何获得模型中定义的验证列表

例子:

class ModelName
  validates_presence_of :field_name
  validates_inclusion_of :sex, :in => %w(M F)
end

我需要像这样的哈希:

{:field_name => 'required', :sex => 'Must be in: M, F'}
4

4 回答 4

111

您不需要插件来满足基本需求。

您可以这样做以获取所有验证器的哈希值。

ModelName.validators

如果您想获取特定字段的验证器:

ModelName.validators_on(:attribute)
于 2010-10-29T13:34:15.713 回答
3

此代码产生一组必填字段。它应该适合您的需求。

@required_fields = []
ModelName.validators.each do |v|
  @required_fields << v.attributes.first if v.kind == :presence
end
于 2018-12-17T14:48:18.373 回答
1

如果您在模型中动态添加验证,则可以使用实例列出验证:

product = Product.new
product.singleton_class.validators_on(:price)
#=> [#<ActiveModel::Validations::PresenceValidaton>]

在 Rails 5.2 中测试。

于 2018-11-07T11:43:55.663 回答
0

Looks like there's no native way to do it, but a quick Google (for "rails reflect validations") turns up this plugin.

于 2010-10-29T12:41:39.703 回答