AR: Association load after validations if build from within before callback?

Hi,

I'm seeing some very odd behavior which I hope you can explain. If I
build an object via a has_many association within a before_save/
before_create of a parent active record object, Rails attempts to load
the association. This log snippet explain what I mean:

Processing UsersController#create (for 127.0.0.1 at 2009-08-21
16:34:37) [POST]
  Parameters: {"user"=>{"name"=>"asdsad"}, "commit"=>"Create",
"authenticity_token"=>"rqI1EgrWycqHqdUriCiqpIp8rvOa3siD/dwzHolCGMA="}
  User Create (0.4ms) INSERT INTO "users" ("name", "updated_at",
"created_at") VALUES('asdsad', '2009-08-21 14:34:37', '2009-08-21
14:34:37')
  Post Load (0.1ms) SELECT * FROM "posts" WHERE ("posts".user_id =
NULL)
  Post Create (0.1ms) INSERT INTO "posts" ("updated_at", "title",
"text", "user_id", "created_at") VALUES('2009-08-21 14:34:37', 'test',
NULL, 10, '2009-08-21 14:34:37')
Redirected to http://localhost:3000/users/10
Completed in 14ms (DB: 1) | 302 Found [http://localhost/users]

Here's the test code:
class User < ActiveRecord::Base
  has_many :posts

  def before_create
    posts.build :title => 'test'
  end
end

If I move the posts.build out of the before_*, the association is not
loaded. For instance:

class UsersController < ApplicationController
  def create
    @user = User.new(params[:user])
    @user.posts.build :title => 'test'
    @user.save
  [...]
end

.. and ..

class User < ActiveRecord::Base
  has_many :posts
end

... yield this log output:
Processing UsersController#create (for 127.0.0.1 at 2009-08-21
16:42:11) [POST]
  Parameters: {"user"=>{"name"=>"Donald Duck"}, "commit"=>"Create",
"authenticity_token"=>"rqI1EgrWycqHqdUriCiqpIp8rvOa3siD/dwzHolCGMA="}
  User Create (0.4ms) INSERT INTO "users" ("name", "updated_at",
"created_at") VALUES('Donald Duck', '2009-08-21 14:42:11', '2009-08-21
14:42:11')
  Post Create (0.1ms) INSERT INTO "posts" ("updated_at", "title",
"text", "user_id", "created_at") VALUES('2009-08-21 14:42:11', 'test',
NULL, 13, '2009-08-21 14:42:11')
Redirected to http://localhost:3000/users/13
Completed in 12ms (DB: 0) | 302 Found [http://localhost/users]

The above is tested on a clean newly generated rails app with Rails
2.3.3.

Is this intentional, and if so, why is the association loaded when the
parent id is NULL?

Thanks in advance.
Rasmus Rønn Nielsen
www.rrn.dk / www.virtualmanager.com