act_as_tree, belongs_to and has_many foreign keys incorrect

Two models:

class Project << ActiveRecord::Base
  has_many :files

class File << ActiveRecord::Base
  has_one :project

Inside of the project model, when creating a new product, I want to
store the hierarchy of files within it.

If I do,

my_top_level_file = my_project_object.files.create(:file_name =>
my_top_level_file.children.create(:file_name => 'bar')

When the data gets saved, the first row in the Files table gets the
new product_id value that is also inserted into the Projects table,
but the child row does not, giving me results like:

  id: 1
  name: A_Name

  id: 1
  project_id: 1
  parent_id: null
  filename: foo

  id: 2
  product_id: 0 <---------------------- Should this not be 1?
  parent_id: 1
  filename: bar

Firstly, am I doing things right? If so, is this a bug, or is this
how things were intended to work? Surely all rows in the files table
should have the correct foreign key attached to them?