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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

532閲覧

テーブルのレコード保存時のエラー(SQLite3::ConstraintException: NOT NULL constraint failed)

SELA

総合スコア13

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2018/12/04 23:01

###背景
Oiax社『改訂4版 基礎Ruby on Rails』で学習中です。
本書の内容に沿って進めています。
データベースの章で、作成したテーブルにレコードを追加して保存する段階でエラーが出て進捗が止まっているためご質問させていただきます。

状況

対象のテーブルの内容は以下の通りです。

class CreateMembers < ActiveRecord::Migration[5.2] def change create_table :members do |t| t.integer :number, null: false # 背番号 t.string :name, null: false # ユーザー名 t.string :full_name # 本名 t.string :email # メールアドレス t.date :birthday # 生年月日 t.integer :gender, null: false, default: 0 # 性別 (0:男, 1:女) t.boolean :administrator, null: false, default: false # 管理者フラグ t.timestamps end end end

上記のテーブルに対して新しくレコードを追加し、numberとnameを与えて保存しようとしました。

terminal

1irb(main):001:0> Member.count 2 (0.4ms) SELECT COUNT(*) FROM "members" 3=> 0 4irb(main):002:0> member = Member.create(number: 1, name: "Taro") 5 (0.0ms) begin transaction 6 Member Create (0.7ms) INSERT INTO "members" ("number", "name", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["number", 1], ["name", "Taro"], ["created_at", "2018-12-04 22:42:41.521519"], ["updated_at", "2018-12-04 22:42:41.521519"]] 7 (0.0ms) rollback transaction 8Traceback (most recent call last): 9 1: from (irb):2 10ActiveRecord::NotNullViolation (SQLite3::ConstraintException: NOT NULL constraint failed: members.administrator: INSERT INTO "members" ("number", "name", "created_at", "updated_at") VALUES (?, ?, ?, ?)) 11irb(main):003:0>

本の記載では、エラーは生じずにcommit transactionとなり処理が完了することになっています。
原因や対処法を教えていただけないでしょうか。

ご回答に際して不足情報等あればご教示お願い致します。
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

データベースの準備前まで環境を戻して、MySQLで導入し直していったら再度エラーは起きずに進むことができました。

投稿2018/12/05 16:32

SELA

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問