Class: JpPrefecture::Prefecture

Inherits:
Object
  • Object
show all
Defined in:
lib/jp_prefecture/prefecture.rb

Overview

都道府県のコードと名前を扱うクラス

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#areaObject

Returns the value of attribute area


9
10
11
# File 'lib/jp_prefecture/prefecture.rb', line 9

def area
  @area
end

#codeObject

Returns the value of attribute code


9
10
11
# File 'lib/jp_prefecture/prefecture.rb', line 9

def code
  @code
end

#nameObject

Returns the value of attribute name


9
10
11
# File 'lib/jp_prefecture/prefecture.rb', line 9

def name
  @name
end

#name_eObject

Returns the value of attribute name_e


9
10
11
# File 'lib/jp_prefecture/prefecture.rb', line 9

def name_e
  @name_e
end

#name_hObject

Returns the value of attribute name_h


9
10
11
# File 'lib/jp_prefecture/prefecture.rb', line 9

def name_h
  @name_h
end

#name_kObject

Returns the value of attribute name_k


9
10
11
# File 'lib/jp_prefecture/prefecture.rb', line 9

def name_k
  @name_k
end

#typeObject

Returns the value of attribute type


9
10
11
# File 'lib/jp_prefecture/prefecture.rb', line 9

def type
  @type
end

#zipsObject

Returns the value of attribute zips


9
10
11
# File 'lib/jp_prefecture/prefecture.rb', line 9

def zips
  @zips
end

Class Method Details

.allArray

すべての都道府県クラスを返す

Examples:

# 都道府県の一覧を取得
JpPrefecture::Prefecture.all

# collection_select で選択肢を生成
f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name

# collection_select で選択肢を生成(英語表記)
f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name_e

Returns:

  • (Array)

    都道府県クラスの配列


108
109
110
111
112
113
114
115
# File 'lib/jp_prefecture/prefecture.rb', line 108

def self.all
  Mapping.data.map do |pref|
    names = pref[1]
    self.build(pref[0],
               names[:name], names[:name_e],
               names[:name_h], names[:name_k], names[:area])
  end
end

.build(code, name, name_e, name_h = nil, name_k = nil, area = nil) ⇒ Object

配列から都道府県クラスを生成

Examples:

# コード/名前から都道府県クラスを生成
JpPrefecture::Prefecture.build(1, '北海道', 'Hokkaido')

Parameters:

  • pref (Integer)

    都道府県コード

  • name (String)

    都道府県名

  • name_e (String)

    都道府県名(英語表記)

  • optional

    name_h [String] 都道府県名(ひらがな表記)

  • optional

    name_k [String] 都道府県名(カタカナ表記)

  • optional

    area [String] 地方名

  • zips (Array)

    郵便番号の配列 (array of ranges, can be used in ARel, e.g. User.where(zip: prefecture.zips))


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/jp_prefecture/prefecture.rb', line 24

def self.build(code, name, name_e, name_h = nil, name_k = nil, area = nil)
  pref = self.new

  pref.code    = code
  pref.name    = name
  pref.name_e  = name_e.capitalize
  pref.name_h  = name_h
  pref.name_k  = name_k
  pref.zips    = ZipMapping.data[code]
  pref.area    = area
  pref.type    =
    case pref.name[-1]
    when "", "", "", ""
      pref.name[-1]
    else
      nil
    end

  pref
end

.find(args) ⇒ JpPrefecture::Prefecture?

都道府県を検索

Examples:

# 都道府県コードから検索
JpPrefecture::Prefecture.find(1)
JpPrefecture::Prefecture.find(code: 1)

# 都道府県名から検索
JpPrefecture::Prefecture.find(name: '北海道')

# 都道府県名から検索(前方一致)
JpPrefecture::Prefecture.find(name: '東京')

# 英語表記の都道府県名から検索
JpPrefecture::Prefecture.find(name: 'Hokkaido')
JpPrefecture::Prefecture.find(name: 'hokkaido')

Parameters:

  • args (Integer)

    都道府県コード

  • args (Hash)

    検索条件

Options Hash (args):

  • :code (Integer)

    都道府県コード

  • :name (String)

    都道府県名/英語/ひらがな/カタカナ表記の都道府県名

  • :zip (Integer)

    郵便番号

Returns:

  • (JpPrefecture::Prefecture)

    都道府県が見つかった場合は都道府県クラス

  • (nil)

    都道府県が見つからない場合は nil


69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/jp_prefecture/prefecture.rb', line 69

def self.find(args)
  return if args.nil?

  if args.is_a?(Integer) || args.is_a?(String)
    code = args.to_i
  else
    code =
      case args.keys[0]
      when :name
        self.find_code_by_name(args[:name])
      when :code
        args[:code].to_i
      when :zip
        ZipMapping.code_for_zip(args[:zip].to_i)
      end
  end

  names = Mapping.data[code]

  return unless names

  self.build(code,
             names[:name], names[:name_e],
             names[:name_h], names[:name_k], names[:area])
end