test/fixtures等でデータを大量に用意する。
test/fixtures/users.yml等に大量のデータを用意したい時って良くありますよね。
fixturesは、普通にerb効くので
以下の様にループで書く事が可能です。
<% 10.times do |idx| %> test_user_<%= idx %> id: <%= idx %> name: test_user_<%= idx %> <% end %>
上の例だと10個のnameが違うユーザーが出来上がりました。
性別とか年齢を複数のパターンで組み合わせたい場合はこんな感じ
<% MALE = 1; FEMALE = 2 %> <% count = 0 %> <% [ MALE, FEMALE].each do | sex | %> <% [ 8, 10, 18, 20, 21, 30, 50].each do | age | %> test_user_<%= count += 1%> id: <%= count %> name: test_user_<%= count %> sex: <%= sex %> age: <%= age %> <% end %> <% end %>
とやると8歳、10歳、18歳、20歳、21歳、30歳、50歳それぞれの男女のデータを作ってくれる。
データの組み合わせ次第でどれだけ複雑な条件でも出来るし、便利ですね。
と、今更ですが書いてみる。