この記事はアピリッツの技術ブログ「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)
=> [["片桐", "かたぎり", "朋江", "ともえ", "青森県", "横浜市緑区"],
["長沢", "ながさわ", "康太郎", "こうたろう", "愛媛県", "秩父郡皆野町"],
["堀内", "ほりうち", "善高", "よしたか", "兵庫県", "北相馬郡利根町"], ["福原", "ふくはら", "朋也", "ともや", "京都府", "村山市"],
["岩崎", "いわさき", "章太", "しょうた", "高知県", "各務原市"],
["榎本", "えのもと", "歩海", "ほのみ", "岩手県", "高浜市"],
["岸本", "きしもと", "治", "おさむ", "徳島県", "田原市"], ["亀井", "かめい", "立樹", "たつき", "鹿児島県", "玉名郡和水町"],
["本間", "ほんま", "果桜", "かお", "東京都", "山県市"],
["吉野", "よしの", "京介", "きょうすけ", "長崎県", "真庭郡新庄村"]]
ちゃんと、漢字名とひらがなの対応が取れている。