Model-level validations are the best way to ensure that only valid data is saved into your database.They are database agnostic, cannot be bypassed by end users, and are convenient to test and maintain.
This method is a shortcut to all default validators and any custom validator classes ending in ‘Validator’.
Note that Rails default validators can be overridden inside specific classes by creating custom validator classes in their place such as Presence Validator.
If your validator is complex enough that you want instance variables, you can easily use a plain old Ruby object instead: The block receives the record, the attribute's name and the attribute's value.
You can do anything you like to check for valid data within the block.
See the My SQL manual for more details about multiple column indexes or the Postgre SQL manual for examples of unique constraints that refer to a group of columns.