Rails,检查属性是否具有状态验证

el_*_*ick 5 validation attributes ruby-on-rails ruby-on-rails-4

对不起我的英语不好...

有一种方法可以知道属性是否有验证?就像是...

Model.attribute.has_presence_validation?
Run Code Online (Sandbox Code Playgroud)

提前致谢.问候.

Abu*_*kar 7

不确定最简单的解决方案,但我实现了这个功能非常复杂.也许有人想出一些更简单的解决方案.这是适合我的代码.

我在模型上获得所有验证,选择存在验证(ActiveRecord :: Validations :: PresenceValidator)然后选择它们的所有属性并使用include来检查此数组中的属性(:your_attribute)存在

Model.validators.collect{|validation| validation if validation.class==ActiveRecord::Validations::PresenceValidator}.compact.collect(&:attributes).flatten.include? :your_attribute
Run Code Online (Sandbox Code Playgroud)

你可以改变比较声明

validation.class==ActiveRecord::Validations::PresenceValidator
Run Code Online (Sandbox Code Playgroud)

获得所有其他类型的验证,即唯一性等