lib/jp_prefecture/prefecture.rb in jp_prefecture-0.4.0 vs lib/jp_prefecture/prefecture.rb in jp_prefecture-0.5.0

- old
+ new

@@ -1,29 +1,32 @@ # coding: utf-8 require "jp_prefecture/mapping" +require "jp_prefecture/zip_mapping" module JpPrefecture # 都道府県のコードと名前を扱うクラス class Prefecture - attr_accessor :code, :name, :name_e + attr_accessor :code, :name, :name_e, :zips # 配列から都道府県クラスを生成 # # @example # # コード/名前から都道府県クラスを生成 # JpPrefecture::Prefecture.build(1, '北海道', 'Hokkaido') # # @param pref [Integer] 都道府県コード # @param name [String] 都道府県名 # @param name_e [String] 都道府県名(英語表記) + # @param zips [Array] 郵便番号の配列 (array of ranges, can be used in ARel, e.g. User.where(zip: prefecture.zips)) def self.build(code, name, name_e) p = self.new p.code = code p.name = name p.name_e = name_e.capitalize + p.zips = ZipMapping.data[code] p end # 都道府県を検索 @@ -42,10 +45,11 @@ # # @param args [Integer] 都道府県コード # @param [Hash] args 検索条件 # @option args [Integer] :code 都道府県コード # @option args [String] :name 都道府県名/英語表記の都道府県名 + # @option args [Integer] :zip 郵便番号 # @return [JpPrefecture::Prefecture] 都道府県が見つかった場合は都道府県クラス # @return [nil] 都道府県が見つからない場合は nil def self.find(args) return if args.nil? @@ -56,19 +60,20 @@ 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]) end - # すべての都道府県クラスを返す # # @example # # 都道府県の一覧を取得