Module: PhonyRails::Extension::ClassMethods
- Defined in:
- lib/phony_rails.rb
Instance Method Summary collapse
-
#phony_normalize(*attributes) ⇒ Object
Use this method on the class level like: phony_normalize :phone_number, :fax_number, :default_country_code => ‘NL’.
-
#phony_normalized_method(*attributes) ⇒ Object
Usage: phony_normalized_method :fax_number, :default_country_code => ‘US’ Creates a normalized_fax_number method.
Instance Method Details
#phony_normalize(*attributes) ⇒ Object
Use this method on the class level like:
phony_normalize :phone_number, :fax_number, :default_country_code => 'NL'
It checks your model object for a a country_code attribute (eg. ‘NL’) to do the normalizing so make sure you’ve geocoded before calling this method!
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/phony_rails.rb', line 178 def phony_normalize(*attributes) = attributes.last.is_a?(Hash) ? attributes.pop : {} .assert_valid_keys :country_number, :default_country_number, :country_code, :default_country_code, :add_plus, :as, :enforce_record_country, :if, :unless if [:as].present? raise ArgumentError, ':as option can not be used on phony_normalize with multiple attribute names! (PhonyRails)' if attributes.size > 1 end [:enforce_record_country] = true if [:enforce_record_country].nil? conditional = create_before_validation_conditional_hash() # Add before validation that saves a normalized version of the phone number before_validation conditional do set_phony_normalized_numbers(self, attributes, ) end end |
#phony_normalized_method(*attributes) ⇒ Object
Usage:
phony_normalized_method :fax_number, :default_country_code => 'US'
Creates a normalized_fax_number method.
198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
# File 'lib/phony_rails.rb', line 198 def phony_normalized_method(*attributes) = attributes.last.is_a?(Hash) ? attributes.pop : {} .assert_valid_keys :country_code, :default_country_code attributes.each do |attribute| raise(StandardError, "Instance method normalized_#{attribute} already exists on #{name} (PhonyRails)") if method_defined?(:"normalized_#{attribute}") define_method :"normalized_#{attribute}" do |*args| = .merge(args.first || {}) () raise(ArgumentError, "No attribute/method #{attribute} found on #{self.class.name} (PhonyRails)") unless respond_to?(attribute) [:country_code] ||= country_code if respond_to?(:country_code) PhonyRails.normalize_number(send(attribute), ) end end end |