lib/app/models/magic_addresses/association.rb in magic_addresses-0.0.43 vs lib/app/models/magic_addresses/association.rb in magic_addresses-0.0.44

- old
+ new

@@ -36,11 +36,11 @@ # class_name: "MagicAddresses::Address", # autosave: true, # dependent: :destroy has_one :addressible, - -> { where(default: true) }, + -> { where(default: true, named_address: ["", nil]) }, as: :owner, class_name: "MagicAddresses::Addressible", dependent: :destroy has_one :address, @@ -48,11 +48,33 @@ source: :address # accepts_nested_attributes_for :addressible, :address, allow_destroy: true, reject_if: :all_blank end + def has_one_named_address( name = "address" ) + + has_one "#{name}_addressible".to_sym, + -> { where(default: true, named_address: name) }, + as: :owner, + class_name: "MagicAddresses::Addressible", + dependent: :destroy + + has_one "#{name}".to_sym, + through: "#{name}_addressible".to_sym, + source: :address + + define_method "#{name}_attributes=" do |params| + self.send( "#{name}=", MagicAddresses::Address.get_one( self, params ) ) + end + + define_method "#{name}_addressible_attributes=" do |params| + self.send( "#{name}=", MagicAddresses::Address.get_one( self, params["#{name}_attributes".to_sym] ) ) + end + + end + def has_nested_address send :include, NestedInstanceMethods # has_one :address, # as: :owner, # class_name: "MagicAddresses::Address", @@ -92,9 +114,25 @@ # puts "addressible_attributes" self.address = MagicAddresses::Address.get_one( self, params[:address_attributes] ) end end #> InstanceMethods + + + # module OneNamedInstanceMethods + # @@named_address.each do |that| + # + # define_method "#{that}_attributes=" do |params| + # self.send( "#{that}=", MagicAddresses::Address.get_one( self, params ) ) + # end + # + # define_method "#{that}_addressible_attributes=" do |params| + # self.send( "#{that}", MagicAddresses::Address.get_one( self, params[:address_attributes] ) ) + # end + # + # end if @@named_address + # end #> OneNamedInstanceMethods + module NestedInstanceMethods # http://stackoverflow.com/a/4033761 def address_with_build