给出一个模型:
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