ruby-on-rails – 如何获取ActiveRecord验证中配置的最大长度?

给出一个模型:
class Person
  validates_lenght_of :name,:maximum => 50
end

我有一些视图代码显示倒计时并强制执行此最大值.但是,我将50号硬编码到该视图代码中.有没有办法从模型中提取这个数字?

就像是:

Person.maximum_length_of_name

我试过这个:

Person.validators_on(:name)
 => [#<ActiveRecord::Validations::UniquenessValidator:0x000001067a9840 @attributes=[:name],@options={:case_sensitive=>true},@klass=Trigger(id: integer,name: string,created_at: datetime,updated_at: datetime,user_id: integer,slug: string,last_update_by: integer)>,#<ActiveModel::Validations::PresenceValidator:0x000001067a6c30 @attributes=[:name],@options={}>,#<ActiveModel::Validations::LengthValidator:0x000001067a3f08 @attributes=[:name],@options={:tokenizer=>#<Proc:0x00000101343f08@/Users/sjors/.rvm/gems/ruby-1.9.2-p0/gems/activemodel-3.0.6/lib/active_model/validations/length.rb:9 (lambda)>,:maximum=>50}>]

信息在那里,但我不知道如何提取它:

解决方法

使用 validators_on方法
irb(main):028:0> p Person.validators_on(:name)[0].options[:maximum]
50
=> 50

正如@Max Williams所说,它只适用于Rails 3

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...