Report abuse

Considering this code:

class Dog
  include DataMapper::Resource

  property :id, Integer, :serial => true
  property :name, String

  validates_present :name

  before :valid?, :downcase_name

  def downcase_name
    self.name = self.name.downcase if self.name
  end
end

d = Dog.new(:name => "Pluton")

d.save

ArgumentError: wrong number of arguments (1 for 0)
  from /opt/local/lib/ruby/gems/1.8/gems/dm-core-0.9.1/lib/data_mapper/hook.rb:109:in `downcase_name'
  from /opt/local/lib/ruby/gems/1.8/gems/dm-core-0.9.1/lib/data_mapper/hook.rb:109:in `valid?'
  from /opt/local/lib/ruby/gems/1.8/gems/dm-core-0.9.1/lib/data_mapper/hook.rb:108:in `catch'
  from /opt/local/lib/ruby/gems/1.8/gems/dm-core-0.9.1/lib/data_mapper/hook.rb:108:in `valid?'
  from /opt/local/lib/ruby/gems/1.8/gems/dm-validations-0.9.1/lib/dm-validations.rb:34:in `save'
  from (irb):16

gem list | grep dm
dm-aggregates (0.9.1)
dm-ar-finders (0.9.1)
dm-cli (0.9.1)
dm-core (0.9.1)
dm-couchdb-adapter (0.9.1)
dm-is-nested_set (0.9.1)
dm-is-tree (0.9.1)
dm-migrations (0.9.1)
dm-more (0.9.1)
dm-serializer (0.9.1)
dm-timestamps (0.9.1)
dm-types (0.9.1)
dm-validations (0.9.1)