rspecを実行時のエラーの解決方法を知りたく、質問させていただきます。
調べた限りでrspec実行時に、activeModelがDBのスキーマ情報を読み取れてないのが原因だと思っています。
が、どのように修正したらいいのか分からず。。。
解決策をアドバイス頂けると幸いでございます。
※丸一日使っても解決できず。。。
[事象]
rspec実行時に、noMethodErrorが発生する。
しかし、そのメソッド(というかenum)が確実に存在する
テストコード
ruby
1~(省略)~ 2before do 3 create(:product, user: user, indentify_route: :admin_identify, review_status: :in_progress) 4end 5 6it '商品が新規で作られない' do 7~(省略)~ 8end
createした瞬間にエラーが起きています。
発生するエラー内容
RUby
1 NoMethodError: 2 undefined method `indentify_route=' for #<Product:0x00007ff0b75fafc8>
一見すると、indentify_routeをモデルに定義していない
modelは下記
ruby
1class Product < ApplicationRecord 2 3~(省略)~ 4 5 enum indentify_route: { 6 user_identify: 0, # ユーザ 7 admin_identify: 1 # 管理画面 8 }
schema.rbは下記
ruby
1 create_table "products", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t| 2~(省略)~ 3 t.integer "indentify_route", default: 0 4 t.index ["province_id"], name: "index_products_on_province_id" 5 t.index ["user_id"], name: "index_products_on_user_id" 6 end
controller側だと
product.new(indentify_route: :user_identify)
を実行したときにエラーは発生しませんが、
rspecで同じコードを実行するとNoMethodエラーが発生します。
またrspec実行時にステップ実行(binding.pry)を仕込んでコンソールでProduct.newすると
pry> Product.new(indentify_route: :admin_identify)
下記のエラーが出ます。
ActiveModel::UnknownAttributeError: unknown attribute 'indentify_route' for Product.
なので、activeModelがidentify_routeというカラム?スキーマ情報?を認知してないように思います。
やった対応としては下記です。
- puma(アプリサーバ)再起動。
- mysql再起動。
- PC再起動
でも解消できません。
なにかヒントになるような回答でも大歓迎でございます。
詳しい方、どうかアドバイスをお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/16 10:27
2019/04/16 11:24