その他
    ホーム 技術発信 DoRuby FactoryBot と Gimei を使って架空のユーザを作る
    FactoryBot と Gimei を使って架空のユーザを作る
     

    FactoryBot と Gimei を使って架空のユーザを作る

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    Railsアプリで、開発用の seed として FactoryBot と Gimei を組み合わせて架空のユーザデータを作ったが、ちょっとコツが必要だったのでメモっておく

    ポイント

    • Gimei のインスタンスを Transient Attribute に割り当てる
    • 同一の Transient Attribute から「漢字名」と「よみがな」を生成する

    コード

    以下のような factory を用意

    # spec/factories/account.rb
    FactoryBot.define do
      factory :user do
        transient do
          person { Gimei.name }
          address { Gimei.address }
        end
    
        # ユーザ名
        last_name { person.last.kanji }
        first_name { person.first.kanji }
        last_name_kana { person.last.hiragana }
        first_name_kana { person.first.hiragana }
    
        # 住所
        prefecture { address.prefecture }
        city { address.city }
      end
    end
    

    実行例

    factory からデータを生成してみる。

    FactoryBot.build_list(:account, 10).pluck(:last_name,:last_name_kana,:first_name,:first_name_kana,:prefecture,:city)
    => [["片桐", "かたぎり", "朋江", "ともえ", "青森県", "横浜市緑区"],
     ["長沢", "ながさわ", "康太郎", "こうたろう", "愛媛県", "秩父郡皆野町"],
     ["堀内", "ほりうち", "善高", "よしたか", "兵庫県", "北相馬郡利根町"], ["福原", "ふくはら", "朋也", "ともや", "京都府", "村山市"],
     ["岩崎", "いわさき", "章太", "しょうた", "高知県", "各務原市"],
     ["榎本", "えのもと", "歩海", "ほのみ", "岩手県", "高浜市"],
     ["岸本", "きしもと", "治", "おさむ", "徳島県", "田原市"], ["亀井", "かめい", "立樹", "たつき", "鹿児島県", "玉名郡和水町"],
     ["本間", "ほんま", "果桜", "かお", "東京都", "山県市"],
     ["吉野", "よしの", "京介", "きょうすけ", "長崎県", "真庭郡新庄村"]]
    

    ちゃんと、漢字名とひらがなの対応が取れている。

    参考

    記事を共有