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歳それぞれの男女のデータを作ってくれる。
データの組み合わせ次第でどれだけ複雑な条件でも出来るし、便利ですね。


と、今更ですが書いてみる。