March 1, 2021
Hot Topics:

Avoiding Data Corruption with Rails' Active Record Validations

  • By Jason Gilmore
  • Send Email »
  • More Articles »

Validating Input Length

You'll often want to validate the length of user input; for example, to ensure a password contains at least five characters. This is easily done with the validates_length_of method. For example, suppose you wanted to place a maximum limit of 500 characters for the question:

validates_length_of :message, :maximum=>500,
   :message=>"must be less than 500 characters!"

You can also place minimum limits, and even specify a range; for example, to force the user to type a message consisting of greater than 10 characters:

validates_length_of :message, :minimum=>500,
   :message=>"should be greater than 10 characters!"

Or, to momentarily deviate from the theme, suppose you wanted a registering user to create a password consisting of between 5 and 12 characters:

validates_length_of :pswd, :in=>5..12,
   :message=>"should be between 5 and 12 characters!"

Validating Format

The third of many validation methods at your disposal that I'd like to introduce is the validates_format_of method, which allows you to specify a free-form regular expression pattern that the input must successful match against for the rule to pass. This method is particularly useful for validating complex strings such as an email address:

validates_format_of :email,
   :with => /^\S+\@(\[?)[A-Za-z0-9\-\.]+\.([A-Za-z]{2,4}|
   :message=>"is not a valid e-mail address!"

Adding this rule will allow email addresses such as jason@example.com, jason@example.info, and jason@example.net, but disallow incorrect addresses such as jason@example, jason, and jason@.

As an exercise left to the reader, how might you go about validating the support form's phone number using validates_format_of? Remember, you'll need to take a number of variations into account; for instance, (123) 456-7890, (123) 4567890, and 123-233-2920.


This introductory tutorial on Rails' Active Record features can go a long way towards helping eliminate data corruption possibilities. Stay tuned for further articles exploring similar topics!

About the Author

W. Jason Gilmore is Apress' open source editor, and is co-founder of IT Enlightenment. He's the author of several books, including the best-selling Beginning PHP and MySQL 5: Novice to Professional, Second Edition (Apress, 2006. 913pp.). Jason loves receiving email, so don't hesitate to write him at wjATwjgilmore.com.

Page 3 of 3

This article was originally published on November 12, 2007

Enterprise Development Update

Don't miss an article. Subscribe to our newsletter below.

Thanks for your registration, follow us on our social networks to keep up-to-date