Forum: Ruby on Rails Bizarre ActiveRecord::Errors/validation problem

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
1e99128ebac5ca41c91940291d315332?d=identicon&s=25 Luke Redpath (Guest)
on 2006-02-10 16:58
(Received via mailing list)
I could be going mad and missing something really obvious here but I'm
getting an unexpected result from the following.

The schema:

create_table :services, :force => true do |t|
    t.column :id, :primary_key
    t.column :name, :string, :ilmit => 5, :null => false
    t.column :port, :integer, :null => false
    t.column :status, :string
end


The model:

class Service < ActiveRecord::Base
    validates_presence_of :name, :port, :status
end

The unit tests:

class ServiceTest < Test::Unit::TestCase
  def test_new_service
        @service = Service.new
        @service.name = 'www'
        @service.port = 80
        @service.status = 'Unknown'
        assert @service.save
  end

    def test_invalid_service
        @service = Service.new
        assert !@service.save
        assert_equal "can't be blank", @service.errors['name']
        assert_equal "can't be blank", @service.errors['status']
        assert_equal "can't be blank", @service.errors['port']
    end
end

The first test passes fine, but the second test is failing on that last
assertion with:

=> <"can't be blank"> expected but was
=> <nil>.

Any idea why the validate_presence_of method isn't picking up the :port
column and providing an appropriate error message like it is with
name/status? Its not a reserved word or something is it?

To aid debugging, here is the output of:

@service.errors.each_full { |m| puts m }
=> Name can't be blank
=> Status can't be blank

As you can see, no sign of my error message for the port column.

Cheers
Luke
25e11a00a89683f7e01e425a1a6e305c?d=identicon&s=25 Wilson Bilkovich (Guest)
on 2006-02-10 21:59
(Received via mailing list)
Did you copy and paste this? If so, you've got a typo here:
t.column :name, :string, :ilmit => 5, :null => false

"ilmit" instead of 'limit'
This topic is locked and can not be replied to.