This gem allows similar ActiveRecord validates_* commands to be grouped together in blocks and pruned of repeated parameters.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
script
spec
tasks
History.txt
Manifest.txt
README.rdoc
Rakefile

README.rdoc

validate_block

DEPRECATION NOTICE

This gem is NOT maintained. The funcationality has been replaced by ActiveRecord `with_option`: guides.rubyonrails.org/active_record_validations.html#grouping-conditional-validations. I'd like to think this gem had a little something to do with that being added to AR :)

DESCRIPTION:

This gem allows similar ActiveRecord validates_* commands to be grouped together in blocks and pruned of repeated parameters.

How often have you had a block of validation commands in an ActiveRecord object that are repeated, especially :id or :unless options? Does this look familiar?

validates_presence_of  :hair, :hair_color, :unless => :bald?
validates_length_of    :hair, :within => 3..15, :unless => :bald?
validates_inclusion_of :hair_color, :in => HAIR_COLORS, :unless => bald?

Instead, this gem will allow you to replace the above code with:

validate_block :unless => :bald? do
  presence_of  :hair, :hair_color
  length_of    :hair, :within => 3..15
  inclusion_of :hair_color, :in => HAIR_COLORS
end

..which is a great way to DRY your :hair, don't you think?

Basically, this gem 1) removes the requirement to have 'validates_' on the front of the commands and 2) passes the options on the validate_block command to each validation command inside the block.

The syntax of the validation commands remains the same. Keeping the 'validates_*' prefix on the commands inside the block will work but it is not required.

SYNOPSIS:

require 'rubygems'
require 'activerecord'
require 'validate_block'

class SomeObject < ActiveRecord::Base

  validate_block :if => :some_method? do
    presence_of :some_field
    inclusion_of :some_other_field, :in => SOME_VALUES
  end

end

REQUIREMENTS:

ActiveRecord >= 2.1.0

INSTALL:

sudo gem install validate_block

LICENSE:

sam.zoy.org/wtfpl/COPYING