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

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

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

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

Ruby on Rails 6

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

1900閲覧

[Rails]seedデータにSecureRandomで乱数を入れたいが、DBのカラムがnullになる

zyno

総合スコア41

Ruby

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

Ruby on Rails 6

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/08/18 02:08

前提・実現したいこと

SNSのユーザー名を使い、user/usernameという形でURLを据え置きたい。
初期データとしてURLのユーザーIDを乱数にしたい。

発生している問題・エラーメッセージ

ruby

1#db/seeds.rb 2 3require "securerandom" 4 5User.create!(name: "User1", 6 username: "imer_test", 7 email: "example@example.com", 8 password: "foobar", 9 password_confirmation: "foobar", 10 admin: true) 11 1299.times do |n| 13 name = Faker::Name.name 14 username = SecureRandom.urlsafe_base64(10) 15 email = "example-#{n+1}@example.com" 16 password = "password" 17 User.create!(name: name, 18 email: email, 19 password: password, 20 password_confirmation: password) 21end

usernameはtwitterでいう@imer_testというユーザー名を表します。

このusernameを乱数で生成するためにSecureRandom.urlsafe_base64(10)を使用したのですが、DBのカラムがnullになってしまいます。

rubyの標準機能が.rbの拡張子で動かないのはどうにも納得がいかず、かといって解決手段が見当たらないのでどうしたらいいかをここでお聞きしたいと思います。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

このusernameを乱数で生成するためにSecureRandom.urlsafe_base64(10)を使用したのですが、DBのカラムがnullになってしまいます。

usernameは生成したものの、どこにも代入せず放置しているように見受けられます。

投稿2020/08/18 02:10

maisumakun

総合スコア145184

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

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

zyno

2020/08/18 02:14

上段のUser.create!の`username: "imer_test"`につきましてはDBにも値が入っております。 しかし、下段の99.times do以下の`username = SecureRandom.urlsafe_base64(10)`の部分のみが起動せず、DBの値がnullになっております。 放置の意味を掴みかねているので、詳しくお伺いできればと思います。
maisumakun

2020/08/18 02:16 編集

username=で値を計算しているのはいいのですが、その値をUser.create!の中に書いていない(そして、usernameを使って算出した値をUser.create!へ与えているわけでもない)ので、当然ながらデータベースに入ることはありません。
zyno

2020/08/18 02:21

ああああ!!!完全に見落としていました! 無事解決しました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問