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

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

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

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

Q&A

解決済

1回答

804閲覧

ruby on railsでのエラーを直したいです。

TakaakiITO

総合スコア3

Ruby on Rails

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

0グッド

0クリップ

投稿2021/09/20 10:43

前提・実現したいこと

カフェの登校検索サイトを作りたいです。
ファイル名を間違えて作ってしまい、cafeにしたいところcaveになってしまいました。
初めにno such table: cavesのようなエラーが出ました。
config/initializers/inflections.rbにinflect.irregular 'cafe', 'cafes'のように書いて単数形複数形の対応を切り替えた際に以下のエラー文が出ました。

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

C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:60:in `load': C:/Users/takaa/Desktop/cafe_name/config/initializers/inflections.rb:18: syntax error, unexpected string literal, expecting ';' or '\n' (SyntaxError)
inflect.irregular 'cafe', 'cafes'
^
C:/Users/takaa/Desktop/cafe_name/config/initializers/inflections.rb:18: syntax error, unexpected ',', expecting end-of-input
inflect.irregular 'cafe', 'cafes'

エラーメッセージ

該当のソースコード

ruby on rails
ソースコード

### 試したこと 調べながら変えようとしたのですが出来ませんでした。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2021/09/20 11:32

WindowsでRails環境は悪手として知られてるのは置いとくとして、 caveで運用するか、removeして作り直すしかないのでは。
guest

回答1

0

ベストアンサー

質問にあたって、用語を普通に使われているのと違う意味で使ったり、間違って使ったりすると、質問の意味が伝わらないので、答えが得られません。
正しい答えを得るには正しい質問が必要です。

ファイル名を間違えて作ってしまい、cafeにしたいところcaveになってしまいました。
初めにno such table: cavesのようなエラーが出ました。

とありますが、「ファイル名を間違え」たとしたら「no such table: caves」にはなりません。
「モデル名を間違えて作った」のでは?
あぁ、モデル名とfile名連動しているからfile名を間違えた という表現か。
でもわかりにくい。

2点
m.ts10806さんのご指摘のように、素のWindowsでrailsは後で役にたたない苦労を強いられるだけなので、Linux環境を用意してそちらでやることを勧めます。

モデル名として Cafe とすると、DB table 名はその複数形です。
fe で終わる単語の複数形は fをvに変えてes です。
なので、Railsはtable caves を探しています。

migrationを確認してください。 cafes というtableはありますか?
有るのでしたら、次の3つの方法があります。

1 class Cafe に self.table_name = 'cafes' とする
2 rename_table :cafes, :caves を実行するmigrationを作成、実行する
3. table cafes を作る直前まで db:rollback し、table名を caves に直して再作成する。

後でわかりにくいエラーの元になり得るので、1は勧めません

Cafe って元はフランス語じゃ無いのかな。caves って聴いた気がしないので、英語の喫茶店を使ったほうが良いかと。
なんかとても不安なのは caves を単数形にすると 洞窟 cave になりそうな気がする。has_many :caves からモデル名 Cave を探して「ない!」とRailsが言いそうな気がする。

投稿2021/09/20 12:27

winterboum

総合スコア23567

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

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

TakaakiITO

2021/09/21 09:33

回答ありがとうございます。 とても分かりやすく助かりました。 しかし、1から作成してみることにしました。 また、質問に答えて頂けると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問