Various additions to the dm-validations API
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
tasks
.gitignore
Gemfile
LICENSE
README.rdoc
Rakefile
VERSION
dm-validations-ext.gemspec

README.rdoc

dm-validations-ext

DataMapper plugin providing access to validation errors of associated parent and children objects. See the example below to get an idea on how it works.

Example

DataMapper.setup :default, "sqlite::memory"

class User
  include DataMapper::Resource

  property :id, Serial
  property :name, String

  belongs_to :group
  has n, :roles
end

class Group
  include DataMapper::Resource

  property :id, Serial
  property :name, String, :length => 10..255

  has n, :users
end

class Role
  include DataMapper::Resource

  property :id, Serial
  property :name, String, :length => 4..10

  belongs_to :user
end

DataMapper.finalize
DataMapper.auto_migrate!

user  = User.new(:name => "John")
group = Group.new(:name => "Too Short")
role  = Role.new(:name => "Way Too Long")

user.group = group
user.roles << role

user.save
# => false

user.errors[:group].inspect
# => <DataMapper::Validations::ValidationErrors:0xa098a30 @resource=#<Group @id=nil @name="Too Short">, @errors={:name=>["Name must be between 10 and 255 characters long"]}>

user.errors[:roles].inspect
# => [#<DataMapper::Validations::ValidationErrors:0xa0931ac @resource=#<Role @id=nil @name="Way Too Long" @user_id=nil>, @errors={:name=>["Name must be between 4 and 10 characters long"], :user_id=>["User must not be blank"]}>]