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?