sanity check on setting up relationships please

I hate having to ask this but my eyeballs are spinning and I seem to be getting some odd behavior.

a bit of the schema:

create_table "orders", :force => true do |t|   t.column "billing_address_id", :integer   ... end

# single table inheritance here... AddressBilling & AddressShipping create_table "addresses", :force => true do |t   t.column "type", :string, :limit => 20   .... end

which of these pairs is correct?

class Order < ActiveRecord::Base   has_one :billing_address,                  :class_name => "AddressBilling" end

class AddressBilling < Address   belongs_to :order end

------- OR ----------------

class Order < ActiveRecord::Base   belongs_to :billing_address,                     :class_name => "AddressBilling" end

class AddressBilling < Address   has_one :order end

I thought the first was the correct but I'm a noob and neither seem to be working as I'd expect.

When I do this in the controller: @orders = Order.find(:all)

then in the view: <% @orders.each do |order| %> <tr><td><%= order.billing_address_id %></td></tr> <% end %>

that works fine but then if I do this: <% @orders.each do |order| %> <tr><td><%= order.billing_address.id %></td></tr> <% end %>

I get an error about billing address being a nil object? Yes the billing address is there with the correct id.

seems odd to me... any help greatly appreciated and thanks in advance! Tim