- 更新日: 2014年3月29日
- RSpec
Invalid single-table inheritance type: Rails RSpecテストでエラー
スポンサーリンク
新しく Rails でモデルを作成して、RSpec でモデルのテストを行おうとしたら遭遇したらエラー。
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
1 2 3 4 |
ActiveRecord::SubclassNotFound: Invalid single-table inheritance type: **** is not a subclass of xxxx |
初めて見るエラー文でしたし、モデルの属性名(DBテーブルのカラム名)で type という名前のものを作成していたので、このエラー文を見てすぐにピンときました。これ、type が ActiveRecord の予約語かなんかだろうな〜と。
調べてみるとその通りで、”type” は ActiveRecord の Single Table Inheritance(単一テーブル継承)という機能で利用される、予約語の属性名の1つらしいです。ということで、マイグレートファイルを編集して属性名を type から他の名前へ変更しました。
そして、マイグレーションをやり直して、test:prepare してテストやり直し。
1 2 3 4 |
$ bundle exec rake db:migrate:reset $ bundle exec rake test:prepare |
これで、モデルのテストが通りました。
スポンサーリンク
私は Rails のテストフレームワークには RSpec を使っています。サーバーのテスト用に Serverspec もおすすめです。
>> 次の記事 : RSpec でスタブの使い方
<< 前の記事 : RSpec の –profile オプションで時間のかかる遅いテストを調べる
- RSpec の関連記事
- FactoryGirlをSpringと共に使う時の注意
- 複数モデルのpost :createをテストするRSpecコード(Controller Spec)
- RSpec3でTime.nowをスタブ化(stub)
- RSpecでJSONによるPOSTリクエストをテスト
- RSpec & Capybara の雑感
- RSpec+Capybaraで同名の複数要素の並び順をテストする
- RSpec3ではrails_helper.rbがrequireされる
- Capybara + Launchy で RSpec テストをブラウザで確認
- CapybaraのwithinをRSpecで使う
- Serverspec(RSpec)のテスト出力に色を付けて見やすくフォーマット
Leave Your Message!