Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Association add-on for the Validatable gem
Ruby
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
.gitignore
README.rdoc
Rakefile
VERSION
init.rb
validatable_associations.gemspec

README.rdoc

ValidatableAssociations

ValidatableAssociations is a Rails plugin and add-on to Jay Fields Validatable library. This add-on lets you specify associations to other validatable Classes and allows you to set up a decent validatable structure.

Install

Install the gem (recommended):

$ gem install validatable_associations

Please notice that the validatable_associations gem is in the gemcutter repository. Please follow the instructions provided on their website to set up your rubygems installation.

Or install as a Rails plugin:

$ script/plugin install git://github.com/rubiii/validatable_associations.git

Associations

A very simple example of a “User has one Gorilla” association:

class User
  include Validatable
  include ValidatableAssociations

  has_one :gorilla

  attr_accessor :username, :password

  validates_presence_of :username
  validates_length_of :password, :minimum => 6
end

class Gorilla
  include Validatable
  include ValidatableAssociations

  attr_accessor :name, :size

  validates_presence_of :name
  validates_numericality_of :size
end

Currently implemented associations:

The first version of this add-on only includes has_one associations. I intend to only add more associations if I need them myself or if anyone convinces me that he really needs support for another type of association.

Validation

Calling the valid? method (provided by the Validatable library) on an instance of one of your validatable Classes will also run the validations off all associations of the Class.

Mass-assignment

You can use mass-assignment to assign multiple values to your Class at once. This also includes every one of its associations.

user = User.new :username => "apricot", :password => "secret",
  :gorilla => { :name => "Joe", :size => 4411 }
Something went wrong with that request. Please try again.