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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Ruby

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

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

Q&A

解決済

2回答

2582閲覧

【Rails PostgreSQL】PG::UndefinedTable: ERROR: relation "users" does not exist

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Ruby

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/05/09 03:33

編集2020/05/09 16:39

前提・実現したいこと

Ruby on railsで会員登録機能を実装中にエラーが発生しました。
PG::UndefinedTable: ERROR: relation "users" does not existを解決したいので質問させて頂きます。

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

ActiveRecord::StatementInvalid in Home#new Showing C:/Users/R/butube/app/views/home/new.html.erb where line #1 raised: PG::UndefinedTable: ERROR: relation "users" does not exist LINE 8: WHERE a.attrelid = '"users"'::regclass ^ : SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod, c.collname, col_description(a.attrelid, a.attnum) AS comment FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum LEFT JOIN pg_type t ON a.atttypid = t.oid LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation WHERE a.attrelid = '"users"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum

該当のソースコード

<% @user = User.new unless @user %> <%= form_for @user,:url => {controller: "home", action: "create" } do |f| %> <p>名前</p> <%= f.text_field :name %> <p>user_id</p> <%= f.text_field :user_id %> <p>メールアドレス</p> <p>*実在しないメールアドレスを記入した場合使える機能に制限が設けられる場合があります。</p> <%= f.email_field :email %> <p>パスワード</p> <%= f.text_field :password %> <br> <%= f.submit "新規登録!" %> <% end %>

20200507090359_create_users.rb

1class CreateUsers < ActiveRecord::Migration[5.2] 2 def change 3 create_table :users do |t| 4 t.text :name 5 t.text :user_id 6 t.text :email 7 t.text :password 8 t.integer :level 9 t.integer :contribution 10 11 t.timestamps 12 end 13 end 14end 15

試したこと

1行目の

<% @user = User.new unless @user %>

がエラーの原因のようなのでコメントアウトしました。すると「First argument in form cannot contain nil or be empty」と表示されるのでコメントアウトを外しました。

コントローラーでは下のように@userを定義しているはずです。

app/controllers/home_controller.rb

1def new 2 @user = User.new 3 end

補足情報

Windows 10 home
Ruby on rails 5.2.4
ruby 2.6.6
PostgreSQL 12.2

失礼な点や情報不足なところがありましたら申し訳ありません。
どうぞよろしくお願いします。

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

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

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

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

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

m.ts10806

2020/05/09 03:53 編集

Railsに詳しいわけではないですが、 users が求められているに対して user で定義きくものなのでしょうか
退会済みユーザー

退会済みユーザー

2020/05/09 04:47

試しに def new @user = Users.new end <% @user = Users.new unless @user %> と変更してみた所「uninitialized constant ActionView::CompiledTemplates::Users」とのエラーが発生しました。 このエラーを直すためにapp/models内のuser.rbをusers.rbに「class User < ApplicationRecord end」のUserをUsersに変更すると再び同じエラーが発生したのでusersに変更してもエラーが修正されることはありませんでした(ノД`)シクシク
guest

回答2

0

Railsではモデル名は単数なので、class User が正しいです。
で、
migaration で table "users" を作ってありますか?

投稿2020/05/09 08:56

winterboum

総合スコア23567

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

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

退会済みユーザー

退会済みユーザー

2020/05/09 16:37

回答ありがとうございます。 ↓がマイグレーションファイルです。 "users"tableは作成出来ているかと思います。 class CreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| t.text :name t.text :user_id t.text :email t.text :password t.integer :level t.integer :contribution t.timestamps end end end
guest

0

ベストアンサー

なんとか解決致しました。
回答や修正依頼をしてくださったwinterboumさん、m.ts10806さん、ありがとうございます。

解決した方法は簡単に言えばマイグレーションファイルを作り直しました。
詳しくはブログに書きました。
PG::UndefinedTable: ERROR: relation "users" does not existの解決法

投稿2020/05/10 00:12

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問