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 -- Posted via http://www.ruby-forum.com/.
Dhritiman Banerjee wrote:> 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?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.