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

前端之家收集整理的这篇文章主要介绍了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

原文链接:https://www.f2er.com/ruby/272380.html

猜你在找的Ruby相关文章