81日目
今日の学習
Ruby on Rails
ポートフォリオ案を確認していただくことができて、ここは直した方がいいといったような場所の指導を受けることができたため、修正後作成にとりかかろうと思う。
主にDBへの指摘が中心だったため、自分のDBへの理解がいかに足りていなかったかを痛感した。
作成に入る前に、楽天APIで検索機能が扱えるかどうか、データベースに検索結果を登録できるかどうかを練習中。 最終的には、ひとつのフォームから複数のモデルを登録したいと考えているが、やったことがないので少しずつ課題をこなしていきたい。
学習メモ
Minitestを生成しないようにする設定
rails new
でアプリを作成する際に、なにも指定しなければMinitestがデフォルトで入る。
今回、テストをRSpec
で行うポートフォリオを作ろうと思っているため、以下のオプションをつけることでMinitestの自動生成を防ぐようにする。
rails new appname --skip-test
Railsチュートリアルの最中に幾度となくテストを書いていたが、RSpecを使ったことはないため不安がある。
マイグレーションでidを追加しない
Railsで主キーをid以外に設定し、ほかのテーブルとアソシエーションを結ぶ - Qiita
テーブルを作るときにidカラムは追加せずに、他のカラムをPKにしたいときは、マイグレーションファイルのcreate_table
の部分を以下のようにする。
create_table :***, id: false do |t|
主キーにしたいテーブル内のカラムに、null: false, primary_key: true
を追記する。
t.integer :***, null: false, primary_key: true
Application ID is not definedエラー
楽天APIで商品を検索して表示させる段階で、適当な商品名を入力し送信してみると、エラーが出る。
Application ID is not defined
ということで、アプリケーションIDがないですとのこと。
検索してみると、同じような状態の人を発見した。
Ruby - 楽天API Application ID is not definedを解決したい|teratail
結論として、IDを指定する際にはRakutenWebService.configure
メソッドを使わなければならないのだが、参考にしていた記事ではRakutenWebService.configuration
となっており、その通りに書いていて失敗していたということだった。
この方も自分と同じくちょっと古めの記事を参考にしていたようだ。参考になる記事は鵜呑みにせず、公式の資料にも必ず目を通すようにしたい。