从模型中获取验证

时间:2010-10-29 12:33:34

标签: ruby-on-rails validation activemodel

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

示例:

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 个答案:

答案 0 :(得分:85)

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

您可以执行此操作以获取所有验证器的哈希值。

ModelName.validators

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

ModelName.validators_on(:attribute)

答案 1 :(得分:1)

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

@required_fields = []
  ModelName.validators.each do |v|
  @required_fields << v.attributes.first if v.kind == :presence
end

答案 2 :(得分:0)

看起来没有本地方法可以做到这一点,但是快速的Google(用于“rails反映验证”)会出现this plugin

答案 3 :(得分:0)

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

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

在Rails 5.2中进行了测试。