不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

paizaラーニング『Webアプリ開発入門 Sinatra編4:ActiveRecordでデータベースを操作しよう (全8回)』を受講してみた

2021-03-17 23:05:48 | paiza

『Webアプリ開発入門 Sinatra編4:ActiveRecordでデータベースを操作しよう (全8回)』


このレッスンではActiveRecordというライブラリを使うらしい。
ということで、ActiveRecordをインストール。

$ sudo gem install activerecord

メモ

#01:ActiveRecordの役割と効果

#02:ActiveRecordでMySQLに接続する

  • SQL文を使ってMySQLに接続する場合
    • Mysql2::Client.new()メソッドを使う
  • ActiveRecordでMySQLに接続する場合
    • ActiveRecord::Base.establish_connection()メソッドを使う
    • テーブルを表すクラスを定義する
      • 複数形のテーブル名は単数形のクラス名とする。
      • クラス名の先頭は大文字。

#03:SinatraとActiveRecordでデータを表示しよう 

  • SinatraでActiveRecordを利用するコード
    • player.rbの修正
    • index.erbの作成

#04:ActiveRecordでデータベースを使ってみよう1

  • 様々なデータの取り出し方
    • すべてのデータを取り出す
      @players = Player.all
    • 最初の3件を取り出す
      @players = Player.limit(3)
    • 条件を指定して取り出す=
      @players = Player.where("level >= ?", 5)
  • 指定したidのデータを取り出す:player.rb
    • get '/show/:id' do

#05:ActiveRecordでデータベースを使ってみよう2

  • ルーティング
    • /new/ → データを追加
    • /update/{id}  → データを更新
    • /destroy/{id} → データを削除
  • ActiveRecordとSinatraでの記述方法
    • データを追加する
      Player.create(:id => 11, :name => "霧島1号", :level => 1, :job_id => 4)
      ↑idも指定しておく必要がある?
    • ActiveRecordとSinatraで、データを更新する
      player.save
    • ActiveRecordとSinatraで、データを削除する
      player.destroy

#06:ActiveRecordでテーブルを連結してデータを取り出す

  • テーブル間の関係
    • 一方のテーブルの複数の項目に対して、もう片方のテーブルの1つの項目が対応していることを「多対1」の関係という。
    • 多対1の関係でテーブルを結合する場合、クラスの定義に以下を記述する。
      belongs_to :{table_name}
※ このチャプターのコードを書いて実行するとエラーが出てしまった。
→ これはどうやらjob_idに値がないレコードがあるためで、そこに値を設定してやれば問題なく実行できた。

#07:具体例:職業一覧を表示する

  • 1対多の関係でテーブルを結合する場合、クラスの定義に以下を記述する。
    has_many :players
  • 職業一覧を呼び出すルート
    get '/jobs' do
  • 職業一覧のテンプレートを作成
    views/job_index.erb

#08:具体例:特定の職業のプレイヤー一覧を表示する

  • 職業別のプレイヤーインデックスを表示するコードを作成
    • job_index.rb
    • views/job_index.erb

認定証

最終的に出来上がるプログラムってなんか中途半端だな?😟 
次のレッスンで完成させるのかな?
まぁとりあえず認定証を取得。


学習ステータス



ダメだ〜!?眠い〜😴 
今日はちょっと早いけど寝よう。


最新の画像もっと見る

コメントを投稿