年末bitFlyer招待URL
bitFlyer口座開設(ビットコイン1,000円もらえる)URL
こないだ作った LibraryアプリにBook機能を追加する。
Ctrl-C
Scaffold(足場)
Scaffold(足場)指定は、1つのリソースをもとにその情報を管理するために最低限必要な機能を一気に作成する(gは generate)。
$ rails g scaffold book title:string description:text
scaffold book によって図書リソース(図書資源)に対応するBookモデルが作成され、同時に(Bookモデルに関する処理を制御する)Booksコントローラも生成されている。
title:string と description:text は Bookモデルの属性としての図書タイトルtitle(文字列)と説明description(文=複数行対応可)の付加。
app/controllerの編集
コントローラファイルを編集する。
$ cat app/controllers/books_controller.rb
Bookモデルファイル
$ cat app/models/book.rb
Bookルーターファイル
$ cat config/router.rb
resources: の記述によって、Booksコントローラーの7つの標準アクション(new・create・edit・update・destroy・show・index)へのルートを決めている。ブラウザからアクセスするURI(http://server:3000/ここ)で操作振り分けられるようになる。
マイグレーションによりDBを作成
$ cat db/migrate/20221213151700_create_books.rb
$ rails db:migrate
migrate終わってファイルが増えた。
schema.rbとseed.rbが新たにできている。
DBのテーブルが正しくできたかはdb/schema.rbによって確認できる。
$ cat db/schema.rb
図書館アプリ起動!
$ rails s -b 0.0.0.0
ばっちし動いてる。
New Book してみよう。
Create Book
Back
サーバ側の出力みると実行時にActiveRecordが動いてるのがわかる
ActiveRecrodはMVCモデルのM(モデル)機能を提供し、データベースとモデルの仲介を行うORM(Object Relational Mapper / Mapping)として次の役割を果たす。
・モデルとデータベーステーブル、モデル属性とテーブル項目の対応づけ(Mapping)
・複数のモデル間の関連づけ(アソシエーション)
・リソース変更時の検証(バリデーション)
・リソース変更時のメソッドの呼び出し(Callback)
・データベーステーブルの作成・変更のマイグレーション
associationか。Marxか。
allメソッド、インスタンス変数@books、暗黙のindexビュー
$ cat app/views/books/index.html.erb
Ruby on Rails 楽しい。シンプルでわかりやすいけど強力。BGM聴きながらやる。