我如何得到模型中定义的验证列表
示例:
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'}
答案 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中进行了测试。