Bug in validates_associated?

Here is the setup:

Windows XP, InstantRails, MySQL 14.7, Ruby 1.8.4, Rails 1.1.2

MODEL:

class Office<ActiveRecord::Base
has_many :users
end

class User<ActiveRecord::Base
belongs_to :office

validates_presence_of :office_id
validates_associated :office

<…other stuff…>
end

UNIT_TEST test/unit/user_test.rb

def test_associations
u = User.new
u.office_id = 2222 # Invalid office id
assert !u.save # Expected because of the invalid office id

u.office_id = 2    # Valid office ID, found in fixtures
assert u.save      # This works! So far, so good

u.office_id = 2222
assert !u.save     # THIS SHOULD FAIL, BUT DOES NOT

end

Can someone explain this behavior?

thanks

Dhritiman Banerjee wrote:

<…other stuff…>
assert u.save # This works! So far, so good

u.office_id = 2222
assert !u.save     # THIS SHOULD FAIL, BUT DOES NOT

end

Can someone explain this behavior?

You probably want to replace the two validation statements you’re
using with:
validates_presence_of :office

The office attribute will be nil when office_id is not set to the
id of an existing office record, but validates_associated will
pass because there’s no associated object to check.


We develop, watch us RoR, in numbers too big to ignore.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs