class JpPrefecture::Prefecture
都道府県のコードと名前を扱うクラス
Attributes
area[RW]
code[RW]
name[RW]
name_e[RW]
name_h[RW]
name_k[RW]
type[RW]
zips[RW]
Public Class Methods
all()
click to toggle source
すべての都道府県を取得
@example
# 都道府県の一覧を取得 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
@return [Array<JpPrefecture::Prefecture>] 都道府県インスタンスの配列
# File lib/jp_prefecture/prefecture.rb, line 56 def self.all Mapping.data.map { |code, _| build_by_code(code) } end
build_by_code(code)
click to toggle source
都道府県コードから都道府県インスタンスを作成
@example
# 都道府県コードから都道府県インスタンスを生成 JpPrefecture::Prefecture.build_by_code(1)
@param code [Integer] 都道府県コード @return [JpPrefecture::Prefecture] 都道府県インスタンス @return [nil] 都道府県が見つからない場合は nil
# File lib/jp_prefecture/prefecture.rb, line 21 def self.build_by_code(code) # rubocop:disable Metrics/AbcSize result = Mapping.data[code] return unless result pref = new pref.code = code pref.name = result[:name] pref.name_e = result[:name_e].capitalize pref.name_h = result[:name_h] pref.name_k = result[:name_k] pref.zips = ZipMapping.data[code] pref.area = result[:area] pref.type = case pref.name[-1] when '都', '道', '府', '県' pref.name[-1] end pref end
find(args)
click to toggle source
都道府県を検索
文字列は前方一致で検索する
@example
# 都道府県コードを検索 JpPrefecture::Prefecture.find(1) JpPrefecture::Prefecture.find(code: 1) # 都道府県名を検索 JpPrefecture::Prefecture.find(name: '北海道') JpPrefecture::Prefecture.find(name: '東京') # 英語表記の都道府県名を検索 JpPrefecture::Prefecture.find(name_e: 'Hokkaido') JpPrefecture::Prefecture.find(name_e: 'hokkaido') # ひらがな表記の都道府県名を検索 JpPrefecture::Prefecture.find(name_h: 'ほっかいどう') # カタカナ表記の都道府県名を検索 JpPrefecture::Prefecture.find(name_k: 'ホッカイドウ') # すべての項目を検索 JpPrefecture::Prefecture.find(all_fields: '東')
@param args [Integer] 都道府県コード @param args [Hash<Symbol, Integer>] :code 都道府県コード @param args [Hash<Symbol, String>] :name 漢字表記/:name_e 英語表記/:name_h ひらがな表記/:name_k カタカナ表記 @param args [Hash<Symbol, Integer>] :zip 郵便番号 @param args [Hash<Symbol, (String, Integer)>] :all_fields マッピングに定義しているすべてのフィールドから検索 @return [JpPrefecture::Prefecture] 都道府県が見つかった場合は都道府県インスタンス @return [nil] 都道府県が見つからない場合は nil
# File lib/jp_prefecture/prefecture.rb, line 93 def self.find(args) return if args.nil? case args when Integer, String JpPrefecture::Prefecture::Finder.new.find(field: nil, value: args) when Hash search_field = args.keys.first search_value = args.values.first JpPrefecture::Prefecture::Finder.new.find(field: search_field, value: search_value) end end