Sha256: 4c0a7018e9c26f0b354daec8eee0517045f253bbd15dc5423259bb7b350c4283

Contents?: true

Size: 1.04 KB

Versions: 40

Compression:

Stored size: 1.04 KB

Contents

module Concerns
  module Addressable
    extend ActiveSupport::Concern

    included do
      has_many :addresses, as: :addressable, dependent: :destroy
    end

    module ClassMethods
      def configure_address(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

40 entries across 40 versions & 1 rubygems

Version Path
udongo-7.9.0 app/models/concerns/addressable.rb
udongo-7.8.1 app/models/concerns/addressable.rb
udongo-7.8.0 app/models/concerns/addressable.rb
udongo-7.7.2 app/models/concerns/addressable.rb
udongo-7.7.1 app/models/concerns/addressable.rb
udongo-7.7.0 app/models/concerns/addressable.rb
udongo-7.6.2 app/models/concerns/addressable.rb
udongo-7.6.1 app/models/concerns/addressable.rb
udongo-7.6.0 app/models/concerns/addressable.rb
udongo-7.5.1 app/models/concerns/addressable.rb
udongo-7.5.0 app/models/concerns/addressable.rb
udongo-7.4.2 app/models/concerns/addressable.rb
udongo-7.4.1 app/models/concerns/addressable.rb
udongo-7.4.0 app/models/concerns/addressable.rb
udongo-7.3.5 app/models/concerns/addressable.rb
udongo-7.3.4 app/models/concerns/addressable.rb
udongo-7.3.3 app/models/concerns/addressable.rb
udongo-7.3.2 app/models/concerns/addressable.rb
udongo-7.3.1 app/models/concerns/addressable.rb
udongo-7.2.1 app/models/concerns/addressable.rb