Validating the presence of a foreign key?

Ben Johnson wrote:

In the docs it says I should validate the presence of the foreign key and not the object itself. I did this and I still get the error when both objects are new records. A very simple example:

class UserGroup < ActiveRecord::Base   has_many :users, :dependent => :destroy end

class User < ActiveRecord::Base   belongs_to :user_group   validates_presence_of :user_group_id end

user_group = UserGroup.new user_group.users.build user_group.save!

Tells me that users is invalid and it says that user group cant be blank. In the docs it says if I do this I should not get this error. Is this a new edition to ActiveRecord or something? I am using edge rails. Thanks!

To my mind the API doc's advice to validate presence of foreign keys rather than associations is wrong, as I have written about before:

http://groups.google.com/group/rubyonrails-talk/msg/0c827209dd10e767

Validating the presence of associations is the Rails equivalent of DB fk constraints. Validating the presence of foreign_key attributes just checks that they're not null. They could still point to non-existent records.

Ohh, thanks for the information.

-Thufir