プログラミング備忘録

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

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一覧



楽天APIのデータをテーブルに格納する方法 - Qiita

こちらを参考にした。最初の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_keyidではなくisbnにしたいため、カラム名が異なる場合のコードを書かなくてはならない。

しかし、bookcaseがどこから出てきたのか分からず、そのまま書いてもそのようなテーブルはないと言われるためreviewsテーブルを指定しておいた。

(はじめにreviewとしてしまい、マイグレーションできなくて焦った)

データ型 bigint

isbnのデータ型がbigintと設定されており、初めて見るデータ型だったため調べてみると、intより大きなデータを格納するために使うもののようだ。

int、bigint、smallint、および tinyint (Transact-SQL) - SQL Server | Microsoft Docs

商品の番号はおそらくかなり長いので、intでは格納しきれないことを考慮してある。