プログラミング備忘録

プログラミングの学習状況をメモしています

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となっており、その通りに書いていて失敗していたということだった。

この方も自分と同じくちょっと古めの記事を参考にしていたようだ。参考になる記事は鵜呑みにせず、公式の資料にも必ず目を通すようにしたい。