Module: ISO::Countries::CountryField::ClassMethods

Defined in:
lib/iso/countries/country_field.rb

Instance Method Summary collapse

Instance Method Details

#iso_country(*args) ⇒ Object

Declares a field from a model as a iso code for a country

Example:

class Company
  iso_country :country
end

c = Company.new(:country => "es")
c.country_name # => "Spain"
c.country_name = "France"
c.country # => "fr"


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/iso/countries/country_field.rb', line 21

def iso_country(*args)
  args.each do |f|
    class_eval "      \n      validates_inclusion_of :\#{f}, :in => ISO::Countries.country_codes, :allow_nil => true\n      \n      def \#{f}_name\n        ISO::Countries.get_country(\#{f})\n      end\n      \n      def \#{f}_name=(name)\n        code = ISO::Countries.get_code(name)\n        if code\n          self.\#{f} = code\n        else\n          raise ArgumentError, \"Invalid country name\"\n        end\n      end              \n      \n    EOC\n  end\nend\n"