Hi, I am learning RoR and in the process of implmenting a solution, I have run into a problem. My basic setup: Each customer and sales order could have more than one address, say ''billing'', ''shipping'' and may be more. create_table "addresses", :force => true do |t| t.column "address_kind", :string, :limit => 60 t.column "addressable_id", :integer, :default => 0 t.column "addressable_type", :string, :limit => 120 ... end create_table "customers", :force => true do |t| t.column "company_name", :string, :limit => 200 ... end create_table "sales_orders", :force => true do |t| t.column "customer_id", :integer, :default => 0, :null => false ... end class Address < ActiveRecord::Base belongs_to :addressable, :polymorphic => true ... end class Customer < ActiveRecord::Base has_many :addresses, :as => :addressable # has_many :addresses, :as => :addressable, :before_remove => :clean_up_address def billing_address addresses.find_by_address_kind ''billing'' unless addresses.empty? end def shipping_address addresses.find_by_address_kind ''shipping'' unless addresses.empty? end def billing_address=(address) addresses.delete(billing_address) if billing_address address.address_kind = ''billing'' addresses << address end def shipping_address=(address) addresses.delete(shipping_address) if shipping_address address.address_kind = ''shipping'' addresses << address end def clean_up_address(address) write_attribute(:address_kind, nil) write_attribute(:addressable_type, nil) # address.address_kind = nil # address.addressable_type = nil end end class SalesOrder < ActiveRecord::Base has_many :addresses, :as => :addressable ... (address related methods similar to customer) end I am running into a problem while replacing, say, an existing billing address with a new billing address of a customer. The addresses.delete(billing_address) in the billing_address= method updates only the addressable_id to NULL in the database. I tried to add :before_remove option to the has_many and implemented the clean_up method. Even then, only the addressable_id is updated to NULL and not address_kind or addressable_type. Is this a correct approach? And if not, what is the correct approach to follow while reassigning a new address either to a customer or sales order? Your assistance is greatly appreciated. Thanks suresh -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---