Class: Spree::Seeds::Countries

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree/seeds/countries.rb

Constant Summary collapse

EXCLUDED_COUNTRIES =
['AQ', 'AX', 'GS', 'UM', 'HM', 'IO', 'EH', 'BV', 'TF'].freeze

Instance Method Summary collapse

Methods included from Spree::ServiceModule::Base

prepended

Instance Method Details

#callObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/services/spree/seeds/countries.rb', line 10

def call
  ApplicationRecord.transaction do
    new_countries = Carmen::Country.all.map do |country|
      # Skip the creation of some territories, uninhabited islands and the Antarctic.
      next if EXCLUDED_COUNTRIES.include?(country.alpha_2_code)

      Hash[
        'name': country.name,
        'iso3': country.alpha_3_code,
        'iso': country.alpha_2_code,
        'iso_name': country.name.upcase,
        'numcode': country.numeric_code,
      ]
    end.compact.uniq
    Spree::Country.insert_all(new_countries)

    # Find countries that do not use postal codes (by iso) and set 'zipcode_required' to false for them.
    Spree::Country.where(iso: Spree::Address::NO_ZIPCODE_ISO_CODES).update_all(zipcode_required: false)

    # Find all countries that require a state (province) at checkout and set 'states_required' to true.
    Spree::Country.where(iso: Spree::Address::STATES_REQUIRED).update_all(states_required: true)
  end
end