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

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

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

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

Ruby on Rails 6

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

Q&A

1回答

374閲覧

ログイン実装中、再びエラーが・・・

lee_nextline

総合スコア1

Ruby

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

Ruby on Rails 6

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

0グッド

0クリップ

投稿2021/08/20 08:31

前提・実現したいこと

Railsでログイン機能をつけていこうとしていました。
Userモデルを作ったあと、マイグレーションを実行して
usersテーブルを作成しようとしました。

コンソール内で
$bin/rails db:migrateを打ち込んだらエラーで進みません。

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

C:\Users\lee_n\sample>rails db:migrate
== 20210728074409 ChangeTasksNameNotNu11: migrating ===========================
-- change_columm_null(:tasks, :name, false)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

undefined method change_columm_null' for #<ChangeTasksNameNotNu11:0x0000027accac65e0> C:/Users/lee_n/sample/db/migrate/20210728074409_change_tasks_name_not_nu11.rb:3:in change'

Caused by:
NoMethodError: undefined method change_columm_null' for #<ChangeTasksNameNotNu11:0x0000027accac65e0> C:/Users/lee_n/sample/db/migrate/20210728074409_change_tasks_name_not_nu11.rb:3:in change'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

試したこと

試したことはrails aborted!が出ていたため 
$gem list rake
$gen uninstall rake -v13.0.3でアンインストールを試みてみました。

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

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

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

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

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

guest

回答1

0

ChangeTasksNameNotNu11

Null じゃなくて Nu11 になってます。

change_columm_null

カラムのスペルは column です。

この他どんなミスがあるかわからないので、今一度マイグレーションファイルのスペルやマイグレーションの定義方法を確認してみてください。

投稿2021/08/20 09:01

mather

総合スコア6759

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

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

lee_nextline

2021/08/25 06:56

ありがとうございます。一回確かめてみます!
lee_nextline

2021/08/25 06:58

C:\Users\lee_n\sample>rails db:migrate == 20210728074409 ChangeTasksNameNotNull: migrating =========================== -- change_column_null(:tasks, :name, false) -> 0.0168s == 20210728074409 ChangeTasksNameNotNull: migrated (0.0171s) ================== == 20210820082027 CreateUser1s: migrating ===================================== -- create_table(:user_1s) -> 0.0050s == 20210820082027 CreateUser1s: migrated (0.0057s) ============================ という表示が出ています。
mather

2021/08/25 08:01

> という表示が出ています そうなんですね。この表示はエラーではないです。 で、データベースにテーブルは作成されましたか? Railsアプリケーションは期待通りに動作しますか?
lee_nextline

2021/08/26 07:01

irb(main):003:0> user_1s = User.create(name: '匿名', email: 'user@example.com', password_digest: 'digest') (6.0ms) SELECT sqlite_version(*) TRANSACTION (0.1ms) begin transaction User Create (2.1ms) INSERT INTO "users" ("name", "email", "password_digest", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?) [["name", "匿名"], ["email", "user@example.com"], ["password_digest", "digest"], ["created_at", "2021-08-26 06:53:19.245930"], ["updated_at", "2021-08-26 06:53:19.245930"]] TRANSACTION (0.1ms) rollback transaction Traceback (most recent call last): 2: from (irb):2 1: from (irb):3:in `rescue in irb_binding' ActiveRecord::RecordNotUnique (SQLite3::ConstraintException: UNIQUE constraint failed: users.email) irb(main):004:0> user_1s.password_digest Traceback (most recent call last): 2: from (irb):3 1: from (irb):4:in `rescue in irb_binding' NoMethodError (undefined method `password_digest' for nil:NilClass) モデル作成中、こういうような文章が出て進んでない状態です。
mather

2021/08/26 07:35

> RecordNotUnique 一意制約(unique)違反です。重複が禁止されているカラム(推測ですが、emailかな?)がすでにあるレコードと同じになっているためデータベースに挿入できていません。
lee_nextline

2021/08/27 00:19

そうだったんですね。 こういう場合、どう解決すればよいですか? 実は前、一回Userモデルを作ったことがあります。 ユーザーの名前やメールアドレスをデータベースに保存する仕組みは作っています。 ずっとこういう文章が出ていたため、モデル名を「user」から「user-1」に変えて 作成したものから上記のものが出ています。 無視して進めても良いとのことでしょうか?
mather

2021/08/27 06:01

それは全てのコードを見れているわけではないので、僕の方では判断できません。 ただ、少なくともこの実行サンプルでは User クラスを使っていますし、テーブル名も users ですよね。 user_1s = User.create(name: '匿名', email: 'user@example.com', password_digest: 'digest') INSERT INTO "users" (... 「user-1というモデル」がRailsでいうなんのことを指しているのかわかりませんが、質問者の方はパニックになってると思います。 ひとまず、 db:migrate が成功しているのであればこの質問としては解決で、また困ったことがあるときには改めて質問をしたほうが良いです。質問をきちんと書くことでパニックになった頭を整理する時間が得られると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問