ActiveRecord Validation in Rails provides an easy way to validate records for uniqueness. With the help of a real world example, we show why relying solely on Rails validation could become a problem and demonstrate a way to cleanup your database without downtime.
The tagging of translation keys was added as a product feature in the very early stages of the PhraseApp development. Although the feature was constantly improved over time and the performance was very reliable, one day a customer contacted us due to a validation error. The tagging feature had been used rather extensively by this customer to automatically tag all uploaded keys with a GitHub Pull Request, leading to a validation error with an existing tag. So we investigated the issue and discovered that the error was caused by a tag name which was not unique to the project. So how could that happen? We had used ActiveRecord uniqueness validation and only used Rails without skipping the validation.