サンプルデータにセットするための、一定の長さのランダムな文字列を生成するための簡単な方法
Railsで開発をしているさいに、バリテーションテストであったり、表示テストを行いたいさいに、任意の長さを持つランダムな文字列を作成して、それを使いたいとします。現在、以下のような汚いワンライナーを利用して、それを実現しています:
random_string = ->(n){ ->{ (0..n).map{ ->{ ["a", "あ"].sample }.call() }}.call().join }
random_string.call(10)
# => "aあaaaaあaああa"
random_string.call(20)
# => "あaaaaaaaaaあaaああaあaaああ"
random_string.call(30)
# => "ああaあaaaあああああaあaaaああああああaaaあaあaあ"
当然のことながら、このようなワンライナーは書く分にも読む分にもあまり綺麗ではありませんし、もう少しいい方法があるのではないかと思いました。
ちなみに、意図しているのは以下の通りです:
このメソッドは
each
などで利用することを意図しています。例としてはUser.all.each { |u| u.name = random_string.call(30) }
という感じで。生成する文字列に使用する文字列は指定できるほうが望ましい。例えば、上の例なら、サンプルの文字列に
あ
とa
だけを利用したい呼び出されるたびに違う文字列を生成したい(何度呼んでも同じ文字列だと困る)
生成する文字列を引数などを使って指定できると嬉しい
以上、いい方法があれば教えて下さい。