一次验证单独案例的最小和最大长度

use*_*052 4 validation ruby-on-rails ruby-on-rails-3

我验证了这样的姓氏字段

  validates :surname,
    :presence       => true,
    :length         => { :within => min_surname_length..max_surname_length, :message => "is bad (minimum is #{min_surname_length}, maximum is  is #{max_surname_length})" }
Run Code Online (Sandbox Code Playgroud)

但是我希望在没有单独语法验证的情况下将最小值和最大值分开

validates_length_of :name, :minimum => 3
validates_length_of :name, :maximum => 30
Run Code Online (Sandbox Code Playgroud)

简而言之,我想做这样的事情(我知道,这是错的):

  validates :surname,
    :presence       => true,
    :length         => { :within => min_surname_length..max_surname_length, 
                         :message => "is bad (minimum is #{min_surname_length}" IF MINIMUM, 
                         :message => "is bad (maximum is  is #{max_surname_length})" IF MAXIMUM }
Run Code Online (Sandbox Code Playgroud)

怎么可能一次做到这一点?


这是我将如何使用它:

validates :surname,
    :length         => { :within => min_password_length..max_password_length,
                        :too_short => 'too short message',
                        :too_long => 'too long message' }
Run Code Online (Sandbox Code Playgroud)

And*_*man 6

validates_length_of :surname,
  :within => 3..30,
  :too_short => 'too short message',
  :too_long => 'too long message'
Run Code Online (Sandbox Code Playgroud)