Sha256: 66bbbdecba9020e8323702ce36b5a5b0d96d52b0afe0bc591113f638baedab06

Contents?: true

Size: 1.92 KB

Versions: 11

Compression:

Stored size: 1.92 KB

Contents

# encoding: utf-8
module MagicAddresses
  module Association
  
    def self.included(base)
      base.send :extend, ClassMethods
    end
  
    ##   C L A S S - M E T H O D S   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
    module ClassMethods
      
      
      def has_addresses
        has_many    :addresses, 
                    as: :owner, 
                    class_name: "MagicAddresses::Address", 
                    dependent: :destroy
        accepts_nested_attributes_for :addresses, allow_destroy: true, reject_if: :all_blank
      end
      
      
      def has_one_address
        has_one     :address, -> { where(default: true) },
                    as: :owner,
                    class_name: "MagicAddresses::Address",
                    autosave: true,
                    dependent: :destroy
        accepts_nested_attributes_for :address, allow_destroy: true, reject_if: :all_blank
      end
      
      
      def has_nested_address
        send :include, InstanceMethods
        has_one     :address,
                    as: :owner,
                    class_name: "MagicAddresses::Address",
                    autosave: true,
                    dependent: :destroy
        delegate    :street, :number, :postalcode, :city, :district, :subdistrict, :state, :country,
                    :street=, :number=, :postalcode=, :city=, :country=, 
                    to: :address, allow_nil: true
        accepts_nested_attributes_for :address, allow_destroy: true, reject_if: :all_blank
        alias_method_chain :address, :build
      end
      
      
    end #> ClassMethods
  
    ##   I N S T A N C E - M E T H O D S   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
    module InstanceMethods
      
      # http://stackoverflow.com/a/4033761
      def address_with_build
        self.address_without_build || self.build_address
      end
      
    end #> InstanceMethods
  
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
magic_addresses-0.0.12 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.11 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.10 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.9 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.8 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.7 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.6 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.5 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.4 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.3 lib/app/models/magic_addresses/association.rb
magic_addresses-0.0.2 app/models/magic_addresses/association.rb