Stack Builders Releases Valid Data Ruby Gem
valid_data is a simple, lightweight reporting gem (see the source code or download it from RubyGems). By exporting a Rake task (
rake validate_records) to your Rails application, you gain the ability to introspect your ActiveRecord (table-backed) models from the console - specifically, it's checking for rows in your database that Rails would instantiate to invalid model instances. Here's a quick example:
You have a
User model, and the schema looks like this:
create_table "users", force: true do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "first_name", t.string "last_name", t.datetime "created_at" t.datetime "updated_at"
At the model level, you only enforce the presence of the user's email address, like so:
class User < ActiveRecord::Base validates_presence_of :email end
Great! Even better, your application now has 10,000 users signed up. Right about now, you realize it was probably a bad idea to allow a user's
last_name to be blank. So you add some more model validations:
class User < ActiveRecord::Base validates_presence_of :email, :first_name, :last_name end
Immediately, a good chunk of those 10,000 new users you just signed up (i.e. any that didn't provide first- or last-name data) are invalid according to your
User model logic.
This is an extreme example, but the point is that changes in application-level validations happen all the time across your Rails models.
valid_data was designed to make sure you're at least aware of the potential problem looming in your datastore as a result of these changing validations.