Potepan-sgtom / rails_kadai4_hotel_service

ポテパン課題 RubyonRails 宿泊予約サービスアプリ作成
0 stars 0 forks source link

rspecの実装を行おうとするが、Spreeからコピペしたモデルの一文でNameErrorと出るためコマンドが進行しない。 #7

Open Potepan-sgtom opened 1 year ago

Potepan-sgtom commented 1 year ago

1.やりたいこと

rspecを実装したい。

2.現状把握

2.5.前提

ヘッダーなどの共通化(yield使うやつ)とトップページへのリンクを修正(link_to使うやつ)を終わらせたので、ルーティングの定義をnamespaceにしましょうというところでそもそもcontrollerを作っていないことに気付く。ここから下記の流れに。

➀controllerをrails gコマンドで作成しようとしたが、「uninitialized constant Spree::Product::ProductScopes (NameError)」とエラーが出る。

➁そもそもProductScopesはSpree::Productのモデルに記載されたincludeメソッドなのでMVCのファイルでもないしどこをどう直せば良いかわからず手詰まり。しょうがないので、controllerのファイルは手打ちで作った。(エラーをそのまま検索に打ち込んでみたが、該当するものなし(似たようなものはあったが俺の頭では参考にできなかった))

③一旦無視してrspecを実装してみようと「rails g rspec:install」を試みたが上記と同様のエラーが出るためこれを解決しないと先に進まないと判断した。

3.原因の特定

検証などできないので、確定してはいないがなんとなく考えられるのは以下二つ。

1.そもそも引用するSpreeのファイルが間違っているのではないか(調べてみたら同じような用途で使われているSolidusのGitHubがあった。ただ書いてあることが違いすぎたのでようへいの先週のアドバイス(ネタバレになるけど…で言ってくれたやつ)に従って変えていない)

2.こんなことあるかわからないけど、そもそもSpreeは十分検証されたコードだと思うので自身でコードを打つことを想定していないからジェネレーターが使えないのではないか。

4.解決手段

rspecが実装できればいいので、一度違うSpreeのモデルを引用してみる。 しかし合っているかどうかコードを見ただけだと俺はわからないので、意見を聞いた上で行いたい。

備考

controllerファイルの中身もSpreeにあったので引用した。ただ引用したものが合っているか検証する術を持っていない。

Potepan-sgtom commented 1 year ago

※追記

ProductScopesって直訳したら製品範囲ということはそもそもデータベースに何も入ってないから、トムブラウンよろしく「ダメー!!」って言われているだけでは?ということでデータベースに製品情報を追加してみる。

結果:

一応schema見てみたらおもいっきしサンプルデータ入ってるから意味がないことがわかった。