Module: ConcernsOnRails::Models::Addressable::ClassMethods

Includes:
Support::ColumnGuard
Defined in:
lib/concerns_on_rails/models/addressable.rb

Overview

Defined as a real module (not ‘class_methods do`) so the public macro and its private helpers share one `private` and aren’t constrained by Metrics/BlockLength. ActiveSupport::Concern auto-extends ‘ClassMethods`.

Instance Method Summary collapse

Methods included from Support::ColumnGuard

#ensure_columns!

Instance Method Details

#addressable_by(required: DEFAULT_REQUIRED, default_country: "US", validate_state: false, verify_with: nil, lengths: {}, allow_blank: false, normalize_country: false, **mapping) ⇒ Object

Configure the address. Column overrides are passed as ‘part: :column` keyword pairs; everything else tunes behavior. See the module docs.



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/concerns_on_rails/models/addressable.rb', line 64

def addressable_by(required: DEFAULT_REQUIRED, default_country: "US",
                   validate_state: false, verify_with: nil,
                   lengths: {}, allow_blank: false, normalize_country: false, **mapping)
  condition = extract_validation_condition!(mapping)
  self.addressable_fields = resolve_addressable_fields(mapping)
  self.addressable_required = Array(required).map(&:to_sym)
  self.addressable_default_country = default_country.to_s.upcase
  self.addressable_validate_state = validate_state
  self.addressable_verifier = verify_with
  self.addressable_lengths = resolve_lengths(lengths)
  self.addressable_allow_blank = resolve_allow_blank(allow_blank)
  self.addressable_normalize_country = normalize_country
  ensure_required_columns!
  register_address_validation(condition)
end