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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

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

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

Q&A

解決済

1回答

380閲覧

ActiveRecord::StatementInvalid in UsersController#createを解消したい

退会済みユーザー

退会済みユーザー

総合スコア0

PostgreSQL

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

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

0グッド

0クリップ

投稿2023/03/13 13:47

編集2023/03/13 15:14

実現したいこと

Dockerでrails7+postgresqlで環境構築しています。
sorceryを導入しています。
ユーザー登録をしたいのですが、突然できなくなってしまいました。
どのタイミングで出来なくなったのかは不明です。
ご教授いただきたいです。

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

イメージ説明

・ターミナルのログ

[9] pry(main)> User.create!(name: "user_1", email: "user_1@example.com", password: "aaaa", salt: "aaaa") TRANSACTION (0.4ms) BEGIN User Exists? (1.5ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = $1 LIMIT $2 [["name", "user_1"], ["LIMIT", 1]] User Exists? (0.5ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "user_1@example.com"], ["LIMIT", 1]] User Exists? (1.7ms) SELECT 1 AS one FROM "users" WHERE "users"."password" = $1 LIMIT $2 [["password", "aaaa"], ["LIMIT", 1]] TRANSACTION (0.3ms) ROLLBACK ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column users.password does not exist LINE 1: SELECT 1 AS one FROM "users" WHERE "users"."password" = $1 L... ^ from /usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `exec_params' Caused by PG::UndefinedColumn: ERROR: column users.password does not exist LINE 1: SELECT 1 AS one FROM "users" WHERE "users"."password" = $1 L... ^ from /usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `exec_params'

該当のソースコード

・user.rb

authenticates_with_sorcery! validates :name, presence: true, length: {maximum: 20}, uniqueness: true validates :email, presence: true, length: {maximum: 100}, uniqueness: true validates :password, length: { minimum: 3 }, confirmation: true, uniqueness: true end

・xxxxxxxxx_sorcery_core.rb

class SorceryCore < ActiveRecord::Migration[7.0] def change create_table :users do |t| t.string :name, null: false, unique: true t.string :email, null: false, index: { unique: true } t.string :crypted_password t.string :salt t.timestamps null: false end end end

・shema.rb

create_table "users", force: :cascade do |t| t.string "name", null: false t.string "email", null: false t.string "crypted_password" t.string "salt" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["email"], name: "index_users_on_email", unique: true end``` ### 試したこと passwordカラムがない?ということで、一応コンソール上でカラムを確認してみましたが、問題ないと思います。 ```ここに言語を入力 [1] pry(main)> User.column_names => ["id", "name", "email", "crypted_password", "salt", "created_at", "updated_at"]

volumeを削除してDB再構築をしましたが、マイグレーションファイルもupされていたり、shema.rbと相違ないため、誤って編集されていることもないと思うのですが、原因がわかりません。
ご教授いただきたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

user.rbにuniqueness: trueを記述してたのが原因でした。

validates :password, length: { minimum: 3 }, confirmation: true, uniqueness: true

投稿2023/03/14 00:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問