【发布时间】:2017-11-10 10:25:15
【问题描述】:
我有一个模型,在某些字段上带有验证器。示例:
class Notation < ActiveRecord::Base
validates :name, presence: true, uniqueness: true
validates_length_of :name, minimum: 5, maximum: 128
end
有没有办法从模板中的 :name 字段的最小值和最大值中获取这些值(因为我想在那里向用户显示最小和最大长度的值,并且想要动态地执行此操作,使用反映模型值的模板)? 在 Rails 控制台中,我可以执行类似的操作
Notation.validators_on(:name)
哪个输出
#<ActiveRecord::Validations::PresenceValidator:0x00000005428420 @attributes=[:name], @options={}>, #<ActiveRecord::Validations::UniquenessValidator:0x0000000541b8d8 @attributes=[:name], @options={:case_sensitive=>true}, @klass=Notation (call 'Notation.connection' to establish a connection)>, #<ActiveModel::Validations::LengthValidator:0x0000000540baf0 @attributes=[:name], @options={:minimum=>5, :maximum=>128}>
如果我使用数组的索引
Notation.validators_on(:name)[2]
我有:
#<ActiveModel::Validations::LengthValidator:0x0000000540baf0 @attributes=[:name], @options={:minimum=>5, :maximum=>128}>
但我想知道是否有另一种方法,也许通过我正在“查询”的验证类型,因为我不能依赖数组的顺序。
【问题讨论】:
-
我想你会在这个主题stackoverflow.com/questions/6015001/…找到你需要的东西
-
感谢@SamyKacimi,这正是我所需要的。
标签: ruby-on-rails ruby-on-rails-4