chocoby/jp_prefecture

JpPrefecture::Prefecture.find(name: 'hoge') で意図しないレコードが取得されてしまうケースがある

tackeyy opened this issue · 3 comments

便利なGemを作成いただきありがとうございます! 🎉

概要

JpPrefecture::Prefecture.find(name: 'hoge') は name / name_e / name_h / name_k を前方一致で検索するという仕様のため、以下のようケースで意図しないレコードが取得されてしまいます。

Mapping.data.each do |m|

# 例:レコードが取得できないことを期待しているが、青森のレコードが取得される
JpPrefecture::Prefecture.find(name: '東') 
=> #<JpPrefecture::Prefecture:0x00007fc550158890 @area="東北", @code=2, @name="青森県", @name_e="Aomori", @name_h="あおもりけん", @name_k="アオモリケン", @type="県", @zips=[185501..185501, 300111..395346]>

考えたこと

  • JpPrefecture::Prefecture.find の引数が name の場合は、 name のみを検索対象とする
  • JpPrefecture::Prefecture.find の引数に name_e / name_h / name_k をうけれるようにする

とすれば解決しそうですが、前方一致だと同じような問題が起きる可能性があります。

とりいそぎのレポートです。

反応が遅くなってしまいすみません!
レポートありがとうございます 😄 確認します!

  • 案 1: 完全一致で検索するオプションを追加する
  • 案 2: name_e, name_h, name_k を指定できるようにする
    • name で都道府県以外を検索する人はどれぐらいいるのだろうか?
    • name のみ検索対象にする場合は、PATCH バージョンのアップデートで事前にメッセージを表示する
      • MINOR バージョンをアップデートするタイミングで name だけ検索対象とする

時間が空いて申し訳ありませんが、v1.0.0.rc1 にて対応しました。
https://github.com/chocoby/jp_prefecture/releases/tag/v1.0.0.rc1

不具合等ありましたら Issue を作成するか、Re-open してください 🙇