質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

4回答

1541閲覧

ランダムで文字列を生成する方法【Ruby】

tomtom1

総合スコア168

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/11/27 13:34

###実現したいこと
ランダムで文字列を生成したいです
以下のようにUser名にランダムの文字列を入れたいです。
(validates :name, {presence: true, uniqueness: true}のため)

@user = User.new( name: "ランダムの文字列", password: params[:password] ) @user.save

###試したこと(エラー)

def create @ram = Random.bytes(5) @user = User.new( name: @ram, password: params[:password] ) @user.save

→ undefined method `bytes' for Random:Class

Controller

1t = Time.now 2@strTime = t.strftime 3 @user = User.new( 4 name: @strTime, 5 password: params[:password] 6 ) 7@user.save

→ wrong number of arguments (given 0, expected 1)のエラー

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

参考情報

  • ランダムな日本語のデータを生成するGemまとめ

https://qiita.com/Peranikov/items/12f1015fc20fa41844b3

  • サンプルデータにセットするための、一定の長さのランダムな文字列を生成するための簡単な方法

https://ja.stackoverflow.com/questions/4687/

まずは、faker について調べて見ては如何でしょう。

投稿2020/11/28 00:13

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomtom1

2020/12/04 07:05

勉強になりました!ありがとうございます!
guest

0

①gem gimeiを利用する

https://github.com/willnet/gimei

②コードで実装する

Ruby

1@moji = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよやりるれろわをん'.split(//) 2@mojisuu = rand(4..10) #4文字〜10文字のランダムなひらがな 3puts Array.new(@mojisuu) { @moji[rand(@moji.size)] }.join

https://paiza.io/projects/Nag6HLKVkIPy38xPo8kGyQ?language=ruby

投稿2020/11/27 22:44

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomtom1

2020/12/04 07:05

勉強になりました!ありがとうございます!
guest

0

どのような文字をどれぐらいの数だけとか、予測不可能性が必要かなどが不明ですが、securerandomを使うのが手っ取り早いと思います。

Ruby

1require 'securerandom' 2SecureRandom.alphanumeric(16)

投稿2020/11/27 14:50

raccy

総合スコア21739

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomtom1

2020/11/27 16:22

ありがとうございます!使い方としては以下のようにするのが正しいですか?まだ少し模索中です..。 def create require 'securerandom' @ramdomName = SecureRandom.alphanumeric(5) @user = User.new( name: @ramdomName, password: params[:password] ) @user.save
guest

0

ベストアンサー

bytes()はインスタンスメソッドなので、newしたあとで呼べばいいんじゃないですかね。

ruby

1Random.new.bytes(5)

と思ったけど、これはバイナリ文字列なので、使いにくそうですね。

↓こんなのは、トリッキーすぎますかね。

ruby

1(0...5).map{('a'.ord+rand(26)).chr}.join

小文字のアルファベットで構成される、ランダムな5文字です。

投稿2020/11/27 13:44

編集2020/11/27 16:28
gpsoft

総合スコア1323

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomtom1

2020/11/27 16:10

ありがとうございます!そのようにしましたら、文字化けにより、invalid byte sequence in UTF-8のエラーが出てしまいました! @ram= Random.new.bytes(5).force_encoding("UTF-8")で対応しようとしましたが、同様のエラーです。 https://blog.tanebox.com/archives/452/
gpsoft

2020/11/27 16:29 編集

ありゃま、すみません、確認不足でした。マニュアルにも「ランダムなバイナリー文字列を返す」って書いてありますね。 別の案を追記しておきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問