79日目
今日の学習
Ruby on Rails
slim
【爆速で習得】Railsでslimを使う方法から基本文法まで - Qiita
slimとは, Ruby製のテンプレートエンジンのことで、 htmlをより簡潔でスマートに書くことができます。
冒頭の見本を見るだけでも、かなりコンパクトに書かれていることが分かる。
slimを利用するには、gemのインストールが必要なので以下のgemをインストールした。
gem 'slim-rails' gem 'html2slim'
slimのファイルを自動的に作成して欲しい場合は、config/application.rb
に以下のように記述する。
module App class Application < Rails::Application config.generators.template_engine = :slim end end
楽天APIを用いた検索アプリ
rakuten_web_service の紹介 - Qiita
【Rails基礎】楽天APIで商品検索アプリを作ってみた | FREE SWORDER
rakuten_web_service
というgemを使い、サービス情報を取得する。
自分が確認するべきAPIの詳細。
楽天ウェブサービス: 楽天ブックスゲーム検索API(version:2017-04-04) | API一覧
こちらを参考にした。最初のER図を確認してみると、どうやら記事そのものに楽天APIで検索した商品情報を格納するのではなく、新しくテーブルを作る必要があった。
学習メモ
カラムが異なる場合の外部キー制約設定
step1のReviweテーブル作成時、以下のようなコードが出てきた。
add_foreign_key :bookcases, :books, column: :book_id , primary_key: :isbn
これは何を意味するのか調べてみた。
Rails の migration で外部キー制約の設定をする (add_foreign_key, remove_foreign_key) - Qiita
今回、Bookテーブルのprimary_key
をid
ではなくisbn
にしたいため、カラム名が異なる場合のコードを書かなくてはならない。
しかし、bookcase
がどこから出てきたのか分からず、そのまま書いてもそのようなテーブルはないと言われるためreviews
テーブルを指定しておいた。
(はじめにreview
としてしまい、マイグレーションできなくて焦った)
データ型 bigint
isbn
のデータ型がbigint
と設定されており、初めて見るデータ型だったため調べてみると、int
より大きなデータを格納するために使うもののようだ。
int、bigint、smallint、および tinyint (Transact-SQL) - SQL Server | Microsoft Docs
商品の番号はおそらくかなり長いので、int
では格納しきれないことを考慮してある。