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

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

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

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

Q&A

解決済

2回答

907閲覧

rails consoleでreload!コマンドを打たないとデータベースに保存できない

vulegonggl

総合スコア2

Ruby on Rails 6

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

0グッド

0クリップ

投稿2021/12/13 13:44

編集2021/12/14 12:56

Categoryというmodelを作成し、nameというカラムのsring型を追加しました。
rails db:migrateを行い、データベースに保存できるかどうかを確認しようと
rails console --sandbox
を入力して
Category.new
を行うと
uninitialized constant Category (NameError)
のメッセージが表示されオブジェクトを作成できません。(Category.create(name:"aaa")等も同じ)

しかし、rails console --sandboxで
reload!を入力すれば
Category.newはエラーが出ずに成功します。

毎回reload!するのは面倒なので、reload!せずともCategory.newをできるようにしたいです。
原因と対処方法をご存知の方いましたらご教授ください。

試したこと
・他のUserモデルなどはreload!しなくても成功する
・rails db:migrate:resetをしても同じ
・モデルとテーブルと一回削除して作り直しても同じ
・db/seeds.rbでCategory.create!(name: category)を行ったところ、成功します

以下、その症状が起きているターミナルの画面です。

irb(main):001:0> Category.new (irb):1:in `<main>': uninitialized constant Category (NameError) irb(main):002:0> reload! Reloading... => true irb(main):003:0> Category.new (0.4ms) SELECT sqlite_version(*) TRANSACTION (0.0ms) begin transaction => #<Category:0x000000011720d9c0 id: nil, name: nil, created_at: nil, updated_at: nil>

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

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

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

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

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

guest

回答2

0

自己解決

すみません。自己解決しました。
categoryモデルのコントローラーがなかったのでcategoriesコントローラーを作成したところ、原因はわかりませんが、うまく動くようになりました。モデルとコントローラーは絶対作らないといけない決まりでもあるのかわかりませんが、とりあえず動くようになったのでこのまま進めます。
ありがとうございます。

投稿2021/12/14 12:55

vulegonggl

総合スコア2

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

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

0

Categoryというmodelを作成し

ファイル名は正しいでしょうか。autoloadに失敗している可能性も考えられます。

投稿2021/12/13 21:53

maisumakun

総合スコア146018

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

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

vulegonggl

2021/12/13 23:19

回答ありがとうございます。 app/modelsを確認するとモデルを作成したときに自動で作られたcategory.rbの名前になっていることからファイル名自体は正しいと思います。 試しにCategoryモデルではなくGroupモデルを作成して同じことをやってみましたが、同じエラーが出てオブジェクトを生成できませんでした。 何か他に確認するべきところはありますか?
maisumakun

2021/12/13 23:24

> 試しにCategoryモデルではなくGroupモデルを作成して同じことをやってみましたが えっと、コンソールを立ち上げたままファイルを新規作成した、ということでしょうか?
vulegonggl

2021/12/13 23:45

いえ、コンソールから一回抜けて実行したということです。言葉不足ですみません
maisumakun

2021/12/13 23:46

rails c はどのようなRAILS_ENVで実行していますか?
vulegonggl

2021/12/14 00:24

>rails c はどのようなRAILS_ENVで実行していますか? 申し訳ございません。初心者で理解不足で申し訳ないのですが、こちらはrails consoleでRails.envで何が返ってくるかを返答すればよいでしょうか もしそうであればdevelopmentが返ってきます。
maisumakun

2021/12/14 00:43

> こちらはrails consoleでRails.envで何が返ってくるかを返答すればよいでしょうか ありがとうございます。 OSやディスクの環境はどのようなものでしょうか?
vulegonggl

2021/12/14 01:00 編集

MacOS バージョン11.6 MacBookAir (M1,2020) チップ Apple M1 メモリ16GB ディスク Macintosh HD MacOS 11.6 となっています。
maisumakun

2021/12/14 01:03

macOSネイティブで動かしている、ということで間違いないですか? (それだと自分にはわからない部分も多いです)
vulegonggl

2021/12/14 04:16

ネイティブというのはローカル環境(AWS cloud9などではなく自分のPC)で動かしているということでよろしいでしょうか? 今動かしているのはローカル環境になります。 よろしければ今実際に症状が起きているデータをgithubで公開していますので、確認お願いできませんか? githubのアドレスは質問内容に入れておきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問