Aggregating two objects of the same type


#1

I would like to have a customer that has references to two addresses,
a billing address and a shipping address. In a non-rails environment
I would have two keys in the customers table, billing_address_id and
shipping_address_id to reference the addresses. It appears that
ActiveRecord expects the parent id to reside in the child table,
regardless of whether the relationship is one-to-one or one-to-many.

What would the best approach be to persist this type of data
structure? I would prefer to avoid a one-to-many relationship from a
customer to addresses where an address type is used to denote the
shipping or billing address.

Thanks,
Dan


#2

Dan M. wrote:

shipping or billing address.
Something like:

class Customer < ActiveRecord::Base
belongs_to :shipping_address,
:foreign_key => “shipping_address_id”,
:class_name => “Address”
belongs_to :billing_address,
:foreign_key => “billing_address_id”,
:class_name => “Address”
end


#3

On Apr 04, 2006, at 11:37 pm, Alex Y. wrote:

Something like:

class Customer < ActiveRecord::Base
belongs_to :shipping_address,
:foreign_key => “shipping_address_id”,
:class_name => “Address”
belongs_to :billing_address,
:foreign_key => “billing_address_id”,
:class_name => “Address”
end

I was just typing a reply when that came through… I was going to
suggest something similar but the other way round:

class Customer < ActiveRecord::Base
has_one :shipping_address, :class => “Address”, :conditions =>
“address_type = ‘shipping’”
has_one :billing_address, :class => “Address”, :conditions =>
“address_type = ‘billing’”
end

Guess you can take your pick…

Ashley