質問するログイン新規登録

Q&A

0回答

3078閲覧

Rails テスト時にConstraintExceptionが発生

kurokoSin

総合スコア133

Ruby on Rails

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

0グッド

0クリップ

投稿2016/04/25 09:25

編集2016/04/25 10:33

0

0

ご教示のほどよろしくお願いします。

事象

Rails g modelでテーブルを追加したところ
テスト時に以下の様なエラーが発生する様になりました。

実行コマンド

$ rake test

実行結果(抜粋)

22) Error: BattlesControllerTest#test_should_get_battle_losed_the_Tribal: ActiveRecord::StatementInvalid: SQLite3::ConstraintException: NOT NULL constraint failed: skill_bases.created_at: INSERT INTO "skill_bases" ("ActionId", "Name", "Description", "Timing") VALUES (1, '暗殺', '攻撃対象が王国である時、自身のATKが@s%増加する。', 1)

試したこと

こちらのサイト を自分なりに読んでみたところ「再作成してください」と読み取りましたので、実施してみましたが変わりありませんでした。
(再作成の方法としては、
rails d model SkillBase;
sqlite3 db/test.sqlite3 -cmd "drop table skill_bases";
sqlite3 db/development.sqlite3 -cmd "drop table skill_bases";
を実施後、下記model生成コマンドを実施しております。)

また、このmodelに関して、初回作成時にstringとすべきところを「String」(頭が大文字)で間違って作成しまった経緯もございます。

疑問点

migrateファイルにあるt.timestamps null: falseのカラムが影響しているように思えます。
また、logを参照したところ、このファイルだけcreated_atの指定が抜けておりますが、
どうしてこうなっているのかわかりません。

依頼内容

ご存知の方いましたら、
原因、対応方法を教えて頂けます様お願い致します。

エラーが発生しているファイルの情報

model生成時コマンド

$ rails g model SkillBase ActionId:integer Name:string Description:string Timing:integer

db/migrate/20160425001739_create_skill_bases.rb

class CreateSkillBases < ActiveRecord::Migration def change create_table :skill_bases do |t| t.integer :ActionId t.string :Name t.string :Description t.integer :Timing t.timestamps null: false end end end

test/fixtures/skill_bases.yml

# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html one: ActionId: 1 Name: 暗殺 Description: 攻撃対象が王国である時、自身のATKが@s%増加する。 Timing: 1 two: ActionId: 2 Name: 汚染 Description: 攻撃対象が精霊である時、自身のATKが@s%増加する。 Timing: 1 # (以下省略)

log/test.log

Fixture Delete (0.1ms) DELETE FROM "skill_bases" Fixture Insert (0.1ms) INSERT INTO "skill_bases" ("ActionId", "Name", "Description", "Timing") VALUES (1, '暗殺', '攻撃対象が王国である時、自身のATKが@s%増加する。', 1) (0.4ms) rollback transaction

エラーが発生していないファイル

db/migrate/20160420234634_create_skill_infos.rb

class CreateSkillInfos < ActiveRecord::Migration def change create_table :skill_infos do |t| t.integer :SkillNo t.integer :ActionId t.integer :Rank t.integer :Effect t.timestamps null: false end end end

test/fixtures/skill_infos.yml

# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html one: SkillNo: 1 ActionId: 1 Rank: 1 Effect: 30

log/test.log

Fixture Insert (0.1ms) INSERT INTO "skill_infos" ("SkillNo", "ActionId", "Rank", "created_at", "updated_at", "id") VALUES (1, 1, 1, '2016-04-15 11:44:02', '2016-04-15 11:44:02', 298486374)

バージョン情報

$ uname -a Darwin myhostname.local 15.4.0 Darwin Kernel Version 15.4.0: Fri Feb 26 22:08:05 PST 2016; root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64 $ ruby -v ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0] $ rails -v Rails 4.2.5

他に不足している情報等ありましたら教えてください。
追記致します。

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.25%

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

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

質問する

関連した質問