ActiveRecord does query caching by default.
If you use build instead of new when creating the child object the
problem is solved, at least for has_many associations. I have no idea
if this works with has_one associations.
Example of what I mean:
@user = User.new(:name => 'bob')
=> #<User id: nil, name: "bob", age: nil, created_at: nil, updated_at:
@user.comments.build(:body => 'my comment')
=> #<Comment id: nil, user_id: nil, body: "my comment", created_at:
nil, updated_at: nil>
=> [#<Comment id: 2, user_id: 3, body: "my comment", created_at:
"2010-05-12 08:57:21", updated_at: "2010-05-12 08:57:21">]
Replace build with new, and @user.comments will still return  after
@user has been saved.