Belongs_to validating presence of foreign key


#1

I’ve recently read
http://blog.teksol.info/articles/2006/03/08/do-not-validate-belongs_to-or-else
and I seem to be experiencing conflicting behavior with Rails 1.2.3

Parent Table:
id Integer
name String

Child Table:
id Integer
name String
parent_id Integer

class Parent < ActiveRecord::Base
has_many :children
end

class Child < ActiveRecord::Base
belongs_to :parent
validates_presence_of :parent_id
end

So from reading the link above, as well as the warning on
http://api.rubyonrails.com/classes/ActiveRecord/Validations/ClassMethods.html#M000941
I figured this would work.

parent = Parent.new(:name => “Dad”)
child = parent.children.build(:name => “Son”)
parent.save!

However I consistently get “ActiveRecord::RecordInvalid: Validation
failed: Children is invalid”

This behavior is exhibited with both “validates_presence_of :parent”
and “:parent_id”

However, if I remove the “validates_presence_of :parent_id” both
elements are saved and the Child has been saved with the parent id
appropriately.

Am I mis-reading something, or did this work in previous versions?

Running on Intel Mac, against both SQLite3 and MySQL.

-Zach