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

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

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

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

Q&A

解決済

1回答

3339閲覧

rails tutorialエラー NameError: uninitialized constant UserTest::User

athuhiro

総合スコア15

Ruby on Rails 5

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

0グッド

0クリップ

投稿2019/07/15 13:35

rails tutorialの6章を進めています。
その際のrails test:modelsでエラーが生じます。

rails

1#テストコード 2#ファイル名 test/models/user_test.rb 3require 'test_helper' 4 5class UserTest < ActiveSupport::TestCase 6 7 def setup 8 @user = User.new(name: "Example User", email: "user@example.com") 9 end 10 11 test "should be valid" do 12 assert @user.valid? 13 end 14end

rails

1#エラー内容 2 3 1) Error: 4UserTest#test_should_be_valid: 5NameError: uninitialized constant UserTest::User 6 test/models/user_test.rb:6:in `setup' 7 81 runs, 0 assertions, 0 failures, 1 errors, 0 skips

railsに詳しい友人曰く、UserTest::Userが変かも、との意見もありました。
rails db:migrate:resetなどをしてもうまくいきません。
どなたかご教授いただけると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

6章でtestをやっているということは、Userの定義は済んでいる、ということですね。念の為 app/models/user.rb があること、そこに class User が定義されていること、は確認しておいて下さい。
なかったらそれが原因、有るのにも関わらず、だとすると、、、、、
Userを呼び出しているのに、UserTest::Userが未定義と言っているのは、通常は
・ぐろーばる定数Userが見つからなかったので、Userが使われているUserTestの中でも探してみて、そこでも見つからなかった

ということなのです、Userの定義忘れ、が原因なんですが、どういうわけかたまに私も似たようなこと「定義してある定数がないというエラー」に見舞われることがあります。
その理由と解決方法はわからないので、達人のお出ましを願うとして、とりあえずの回避策
User.new を ::User.new にしてみて下さい。

投稿2019/07/15 21:59

winterboum

総合スコア23645

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

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

athuhiro

2019/07/16 01:01

ありがとうございます!! 確かに検索してみると、「定義してある定数がないというエラー」で自分と同じ箇所で躓いている方が数名いました。 こちら def setup @user = ::User.new(name: "Example User", email: "user@example.com") end に変更してテストを実行したところ 1) Error: UserTest#test_should_be_valid: NameError: uninitialized constant User test/models/user_test.rb:6:in `setup' のようなエラーがでてしまいました。
winterboum

2019/07/16 01:06

念の為 app/models/user.rb があること、そこに class User が定義されていること、は確認しておいて下さい。 はどうでしたか?
athuhiro

2019/07/16 01:10

定義はされていました。 class User < ApplicationRecord
winterboum

2019/07/16 02:04

app/models/user.rb を見せて下さい
athuhiro

2019/07/16 02:08

空です、何も書かれていません。 class User < ApplicationRecord end
winterboum

2019/07/16 02:12

はて、、、、 rails c して User[改行] とするとどうなります?
athuhiro

2019/07/16 11:28

こちらエラーが解消されました! Userで改行したところ、 エラーでUser.connectionを打てというところから始まり、Userをconsole内で実行した後、再度テストを行ったところエラーが解消されました。 winterboumさん、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問