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