『Webアプリ開発入門 Sinatra編4:ActiveRecordでデータベースを操作しよう (全8回)』
このレッスンではActiveRecordというライブラリを使うらしい。
ということで、ActiveRecordをインストール。
$ sudo gem install activerecord
メモ
#01:ActiveRecordの役割と効果
- ActiveRecordとは
- ActiveRecordは、データベースのテーブルをRubyのオブジェクトに割り当てる機能を持ったライブラリ。
- ActiveRecordを使うと、データベースのレコードをオブジェクトとして扱うことができるようになり、SQLを書かなくても、Rubyのコードでデータベースが操作できる。
- Ruby+Sinatra+ActiveRecordでWebアプリケーション開発
- 参考になるWebページ
- - [Active Record の基礎 | Rails ガイド]
https://railsguides.jp/active_record_basics.html - - [オブジェクト関係マッピング - Qiita]
https://qiita.com/yk-nakamura/items/acd071f16cda844579b9 - - [ActiveRecord入門 - Qiita]
https://qiita.com/kimioka0/items/8c10e01def23fdbf3aa6
- - [Active Record の基礎 | Rails ガイド]
#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
認定証
最終的に出来上がるプログラムってなんか中途半端だな?😟
次のレッスンで完成させるのかな?
まぁとりあえず認定証を取得。
学習ステータス
ダメだ〜!?眠い〜😴
今日はちょっと早いけど寝よう。
※コメント投稿者のブログIDはブログ作成者のみに通知されます