🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

データベース

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

Q&A

解決済

2回答

2406閲覧

Railsコンソール上でレコードを作成できない。

SKL

総合スコア5

Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

データベース

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

0グッド

0クリップ

投稿2019/11/12 14:45

編集2019/11/13 05:30

Railsコンソール上でレコードを作成。

Ruby on Rails5でtwitterのようなアプリケーションを制作しており、現在ユーザーデータを登録するシステムを作っています。
しかし、railsコンソールで1つレコードを作成しようとしても
NameError: uninitialized constant User
と表示され、作成できません。

そのようなことになった具体的な流れとしては、以下の通りです。


Railsチュートリアルの第六章 6.3 のセキュアなパスワードの追加を試みる。
※チュートリアルの通り進めているのではなく、既に自分が作っていたものに取り入れようとしました。


レコードは制作できるのにもかかわらず、認証がうまく行かない。
イメージ説明

③一旦Userモデルをdestroyして作り直しを試みる。
1回目にモデル作成のコマンドを入力するとTracebackが起きたが、springstopした後に再度コマンドを入力すると作り直せた。

④マイグレーションしようとすると、usersテーブルが既に存在しておりエラーが起きる。

⑤データベースごと削除、その後作り直して再度マイグレーションしたところ成功。

⑥新しくできたusersテーブルにrailsコンソールより、レコードを作ろうと試みるがエラーが発生。

⑦モデル・データベース・テーブルを削除して、作り直して再度試みたが失敗。 
イメージ説明

このような流れとなっております。
どなたかご教授いただけると幸いです。
よろしくお願いいたします。

※カラムは以下のようになっています。
イメージ説明

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

Railsコンソール上でレコードが作成できない。

該当のソースコード

Frame number: 0/24 Cannot read termcap database; using dumb terminal settings. [1] pry(main)> User.new NameError: uninitialized constant User from (pry):1:in `<main>'

Ruby
※railsコンソール操作中

試したこと

・モデルの削除、再度作成
・データベースの削除、再度作り直し
・ロールバックさせ、再度マイグレーション。
・モデルの生成時のコマンド打ち間違いを疑う。
イメージ説明
・下記のサイトを参考にした操作。
uninitialized constantのエラーをどう解決すべきか

補足情報(FW/ツールのバージョンなど)

ruby 2.6.4
bcrypt (3.1.13)
bootstrap (4.3.1)
pry (0.12.2)
rails (6.0.1)
gem 'mysql2', '>= 0.4.4'

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

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

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

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

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

hatsu

2019/11/12 15:36

User.create!(name: "Michael Hartl", email: "mhartl@example.com") とか実行するとどうなりますでしょうか?
SKL

2019/11/13 04:26

できませんでした。 NameError: uninitialized constant User と表示されます。
SKL

2019/11/13 04:37

Orlofsky様 修正いたしました。 ご指摘ありがとうございます。
Mugheart

2019/11/13 05:11

コンソール画面で pp ObjectSpace.each_object(Class).select { |klass| klass.inspect =~ /Class:User\(/ } を実行して #<Class:User( ... )> の要素は取得できますか?
Mugheart

2019/11/13 05:39

であれば原因はよくわかりませんが、Userクラスが定義されてないです。 ファイルを保存できてないとか、コマンドを実行している場所が違ったとか、そういったこともないですか?
SKL

2019/11/13 06:06

Muguhert様 ご指摘をいただいて見直したところ原因を発見でき解決できました。 今回制作中のアプリは元々別にオリジナルがありそれを丸々コピーし、別のものと考えている状態で作業を行っていました。しかし、ファイルの名前が変わってもdatabase作成するときなどの設定は元のオリジナルの名称のまま作業を行なっていたため、私が作業中のアプリのDBがそもそも存在しておらずコマンドを実行している場所が違っていたということがわかりました。 本当に助かりました。ありがとうございます。 よろしければベストアンサーにさせていただきたいので回答の方にコメントいただけないでしょうか?
Mugheart

2019/11/13 06:08

ヒントになったのは幸いですが、詳細がよくわからないので自己解決としていただいて大丈夫です。
SKL

2019/11/13 06:11

Muguhert様 わかりました。 ありがとうございました。
guest

回答2

0

自己解決

原因:DBを作成する命令のコードが誤っていた。

私が今回作業していたのは 「A」 というアプリをFinder上でコピーして完全に別で作った 「A-copy」 というファイルでした。

しかし、「A-copy」の中身は「A」と全く同じだったため、ターミナルの「A-copy」上でDB作成のコマンドを入力しても、それは「A」のDBを作れという命令になっており、そもそもの「A-copy」のDBが作成されていませんでした。

「A-copy」のDBがないということは、「A-copy」のusersテーブルが存在しないことを意味します。
結果、テーブルにレコード作成を命令してもそもそものテーブルが存在していなかったためエラーが出たという流れでした。

イメージ説明

Muguhert様のご指摘がヒントとなり、このことに気がつくことができました。
Muguhert様、そして回答やご指摘いただいた皆様本当にありがとうございました。

投稿2019/11/13 06:46

編集2019/11/13 06:55
SKL

総合スコア5

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

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

0

app/models/user.rb はありますか

投稿2019/11/13 00:55

winterboum

総合スコア23567

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

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

SKL

2019/11/13 04:28

はい、存在しています。 user.rb _____________________ class User < ApplicationRecord has_secure_password end ______________________ という内容です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問