Sha256: df4bfd9bc0291e52f248b2174f986987be5edcee25e405f1808c5416dd88907e

Contents?: true

Size: 1.03 KB

Versions: 16

Compression:

Stored size: 1.03 KB

Contents

module Concerns
  module Addressable
    extend ActiveSupport::Concern

    included do
      has_many :addresses, dependent: :destroy
    end

    module ClassMethods
      def configure_adress(categories, default: nil)
        address_config.update(categories, default: default)
      end

      def address_config
        @address_config ||= Concerns::Addressable::Config.new
      end
    end

    def address(category = nil)
      category = self.class.address_config.default unless category.present?

      unless self.class.address_config.allowed?(category)
        raise "You can't select the '#{category}' address because it's not an allowed category"
      end

      @address_collections = {} unless @address_collections

      unless @address_collections[category.to_sym]

        @address_collections[category.to_sym] = Address.find_or_initialize_by(
          category: category,
          addressable_type: self.class.name,
          addressable_id: id
        )
      end

      @address_collections[category.to_sym]
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
udongo-6.0.0 app/models/concerns/addressable.rb
udongo-5.9.0 app/models/concerns/addressable.rb
udongo-5.8.0 app/models/concerns/addressable.rb
udongo-5.7.0 app/models/concerns/addressable.rb
udongo-5.6.0 app/models/concerns/addressable.rb
udongo-5.5.0 app/models/concerns/addressable.rb
udongo-5.4.0 app/models/concerns/addressable.rb
udongo-5.3.1 app/models/concerns/addressable.rb
udongo-5.3.0 app/models/concerns/addressable.rb
udongo-5.2.0 app/models/concerns/addressable.rb
udongo-5.1.0 app/models/concerns/addressable.rb
udongo-5.0.2 app/models/concerns/addressable.rb
udongo-5.0.1 app/models/concerns/addressable.rb
udongo-5.0.0 app/models/concerns/addressable.rb
udongo-4.0.0 app/models/concerns/addressable.rb
udongo-3.0.0 app/models/concerns/addressable.rb